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++編程學習交流俱樂部!【點擊進入】

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM