1. 程式人生 > 實用技巧 >C語言程式設計初學者基礎知識學習:檔案的讀寫操作!

C語言程式設計初學者基礎知識學習:檔案的讀寫操作!

操作檔案的正確流程為:開啟檔案 --> 讀寫檔案 --> 關閉檔案。

檔案在進行讀寫操作之前要先開啟,使用完畢要關閉。

檔案的操作流程我們隨時要做到心中有數,今天講檔案的讀寫。

檔案的讀寫分為三種方式,今天說第一種C語言以字元形式讀寫檔案

1.以字元形式讀寫檔案——一個字元一個字元的讀寫。

2.以字串的形式讀寫檔案——以字串讀寫。

3.以資料塊的形式讀寫檔案——怎麼讀都可以。


C語言以字元形式讀寫檔案

在C語言中,讀寫檔案比較靈活,既可以每次讀寫一個字元,也可以讀寫一個字串,甚至是任意位元組的資料(資料塊)。本節介紹以字元形式讀寫檔案。

以字元形式讀寫檔案時,每次可以從檔案中讀取一個字元,或者向檔案中寫入一個字元。主要使用兩個函式:fgetc()和fputc()。

1、字元讀取函式 fgetc

fgetc是file get char的縮寫,意思是從指定的檔案中讀取一個字元。它的原型為:int fgetc (FILE *fp);

fp為檔案指標。fgetc()讀取成功時返回讀取到的字元,讀取到檔案末尾或讀取失敗時返回EOF。

EOF是end of file的縮寫,表示檔案末尾,是在stdio.h中定義的巨集,它的值是一個負數,往往是 -1。返回值型別之所以為int,就是為了容納這個負數(char不能是負數)。

EOF不絕對是 -1,也可以是其他負數,這要看編譯器的實現。

fgetc() 使用舉例:

char ch;

FILE *fp = fopen("D:\demo.txt", "r+");

ch = fgetc(fp);

表示從D:\demo.txt檔案中讀取一個字元,並儲存到變數ch中。

在檔案內部有一個位置指標,用來指向當前讀寫到的位置,也就是讀寫到第幾個位元組。

在檔案開啟時,該指標總是指向檔案的第一個位元組。使用fgetc函式後,該指標會向後移動一個位元組,所以可以連續多次使用fgetc讀取多個字元。

注意:這個檔案內部的位置指標與C語言中的指標不是一回事。位置指標僅僅是一個標誌,表示檔案讀寫到的位置,也就是讀寫到第幾個位元組,它不表示地址。檔案每讀寫一次,位置指標就會移動一次,它不需要你在程式中定義和賦值,而是由系統自動設定,對使用者是透明的。

【示例】在螢幕上顯示 D:\demo.txt 檔案的內容。

int main(){

FILE *fp;

char ch;

//如果檔案不存在,給出提示並退出

if( (fp=fopen("D:\demo.txt","rt")) == NULL ){

printf("Cannot open file, press any key to exit!");

getch();

exit(1);

}

//每次讀取一個位元組,直到讀取完畢

while( (ch=fgetc(fp)) != EOF ){

putchar(ch);

}

putchar(' '); //輸出換行符

fclose(fp);

return 0;

}


說明:

在D盤下建立demo.txt檔案,輸入任意內容並儲存,執行程式,就會看到剛才輸入的內容全部都顯示在螢幕上。

該程式的功能是從檔案中逐個讀取字元,在螢幕上顯示,直到讀取完畢。

程式第14行是關鍵,while迴圈的條件為(ch=fgetc(fp)) != EOF。

fget()每次從位置指標所在的位置讀取一個字元,並儲存到變數ch,位置指標向後移動一個位元組。當檔案指標移動到檔案末尾時,fget()就無法讀取字元了,於是返回EOF,表示檔案讀取結束了。

2、字元寫入函式fputc

fputc是file output char的所以,意思是向指定的檔案中寫入一個字元。呼叫的形式為:int fputc ( int ch, FILE *fp );

ch為要寫入的字元,fp為檔案指標。fputc()寫入成功時返回寫入的字元,失敗時返回EOF,返回值型別為int也是為了容納這個負數。例如:

fputc('a', fp);

或者:

char ch = 'a'; fputc(ch, fp);

表示把字元 'a' 寫入fp所指向的檔案中。

兩點說明:

1)被寫入的檔案可以用寫、讀寫、追加方式開啟,用寫或讀寫方式開啟一個已存在的檔案時將清除原有的檔案內容,並將寫入的字元放在檔案開頭。

如需保留原有檔案內容,並把寫入的字元放在檔案末尾,就必須以追加方式開啟檔案。不管以何種方式開啟,被寫入的檔案若不存在時則建立該檔案。

2)每寫入一個字元,檔案內部位置指標向後移動一個位元組。

【示例】從鍵盤輸入一行字元,寫入檔案。

int main(){

FILE *fp;

char ch;

//判斷檔案是否成功開啟

if( (fp=fopen("D:\demo.txt","wt+")) == NULL ){

printf("Cannot open file, press any key to exit! ");

getch();

exit(1);

}

printf("Input a string: ");

//每次從鍵盤讀取一個字元並寫入檔案

while ( (ch=getchar()) != ' ' ){

fputc(ch,fp);

}

fclose(fp);

return 0;

}

說明:執行程式,輸入一行字元並按回車鍵結束,開啟D盤下的demo.txt檔案,就可以看到剛才輸入的內容。

程式每次從鍵盤讀取一個字元並寫入檔案,直到按下回車鍵,while 條件不成立,結束讀取。


最後,不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計~

【值得關注】我的 C/C++程式設計學習交流俱樂部!【點選進入】

問題答疑,學習交流,技術探討,還有超多程式設計資源大全,零基礎的視訊也超棒~