亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言 以字符形式讀寫文件詳解及示例代碼

2020-01-26 14:27:08
字體:
來源:轉載
供稿:網友

在C語言中,讀寫文件比較靈活,既可以每次讀寫一個字符,也可以讀寫一個字符串,甚至是任意字節的數據(數據塊)。本節介紹以字符形式讀寫文件。

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

字符讀取函數 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 文件的內容。

#include<stdio.h>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('/n'); //輸出換行符 fclose(fp); return 0;}

在D盤下創建demo.txt文件,輸入任意內容并保存,運行程序,就會看到剛才輸入的內容全部都顯示在屏幕上。

該程序的功能是從文件中逐個讀取字符,在屏幕上顯示,直到讀取完畢。

程序第14行是關鍵,while 循環的條件為(ch=fgetc(fp)) != EOF。fget() 每次從位置指針所在的位置讀取一個字符,并保存到變量 ch,位置指針向后移動一個字節。當文件指針移動到文件末尾時,fget() 就無法讀取字符了,于是返回 EOF,表示文件讀取結束了。

對EOF的說明

EOF 本來表示文件末尾,意味著讀取結束,但是很多函數在讀取出錯時也返回 EOF,那么當返回EOF時,到底是文件讀取完畢了還是讀取出錯了?我們可以借助 stdio.h 中的兩個函數來判斷,分別是 feof() 和 ferror()。

feof() 函數用來判斷文件內部指針是否指向了文件末尾,它的原型是:

int feof ( FILE * fp );

當指向文件末尾時返回非零值,否則返回零值。

ferror() 函數用來判斷文件操作是否出錯,它的原型是:

int ferror ( FILE *fp );

出錯時返回非零值,否則返回零值。

需要說明的是,文件出錯是非常少見的情況,上面的示例基本能夠保證將文件內的數據讀取完畢。如果追求完美,也可以加上判斷并給出提示:

#include<stdio.h>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('/n'); //輸出換行符 if(ferror(fp)){  puts("讀取出錯"); }else{  puts("讀取成功"); } fclose(fp); return 0;}

這樣,不管是出錯還是正常讀取,都能夠做到心中有數。

字符寫入函數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) 每寫入一個字符,文件內部位置指針向后移動一個字節。

【示例】從鍵盤輸入一行字符,寫入文件。

#include<stdio.h>int main(){ FILE *fp; char ch; //判斷文件是否成功打開 if( (fp=fopen("D://demo.txt","wt+")) == NULL ){  printf("Cannot open file, press any key to exit!/n");  getch();  exit(1); } printf("Input a string:/n"); //每次從鍵盤讀取一個字符并寫入文件 while ( (ch=getchar()) != '/n' ){  fputc(ch,fp); } fclose(fp); return 0;}

運行程序,輸入一行字符并按回車鍵結束,打開D盤下的demo.txt文件,就可以看到剛才輸入的內容。

程序每次從鍵盤讀取一個字符并寫入文件,直到按下回車鍵,while 條件不成立,結束讀取。

以上就是對C 語言 以字符形式讀寫文件的基礎資料,后續繼續添加相關資料,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美大秀在线观看| 国产99在线|中文| 亚洲人成伊人成综合网久久久| 欧美在线激情视频| 亚洲精品短视频| 欧美伊久线香蕉线新在线| 亚洲最大成人网色| 日韩免费在线看| 欧美大片在线看| 国产精品毛片a∨一区二区三区|国| 日韩视频一区在线| 97精品久久久中文字幕免费| 国产精品一区二区三区在线播放| 亚洲国产精彩中文乱码av| 欧美成人在线免费| 日韩免费视频在线观看| 国产精品热视频| 78色国产精品| 午夜精品久久17c| 91在线视频免费| 亚洲天堂av在线免费观看| 久久久午夜视频| 亚洲丝袜一区在线| 久久五月天综合| 另类天堂视频在线观看| 中文国产成人精品| 精品视频在线播放色网色视频| 欧美精品久久久久a| 欧美精品18videos性欧美| 国产一区二区在线播放| 91久久久久久国产精品| 亚洲精品成人久久久| 国产精品久久久久久久久| 欧美精品videofree1080p| 久久久久久久久久国产| 精品国产区一区二区三区在线观看| 日韩成人久久久| 亚洲美女av网站| 2019av中文字幕| 欧美在线激情视频| 久久影视电视剧免费网站清宫辞电视| 亚洲欧美制服丝袜| 日本高清视频精品| 欧美激情在线观看| 日韩电影中文字幕av| 欧美人在线观看| 色综合久久精品亚洲国产| 美女视频黄免费的亚洲男人天堂| 国产精品第1页| 国产一区二区视频在线观看| 91黑丝在线观看| 欧美中文在线观看| 亚洲欧美在线一区二区| 欧美一区三区三区高中清蜜桃| 日韩中文字幕精品| 精品人伦一区二区三区蜜桃网站| 久久这里有精品视频| 日韩视频免费观看| 国产欧美一区二区三区在线| 日韩av在线网址| 国产精品户外野外| 久久亚洲精品成人| 亚洲成人999| 久久综合免费视频| 精品无人国产偷自产在线| 96精品久久久久中文字幕| 国产精品视频久久| 久久久精品久久久久| 国产精品欧美日韩久久| 久久久精品国产亚洲| 成人黄色av播放免费| 97在线精品国自产拍中文| 亚洲第一色在线| 在线视频欧美性高潮| 亚洲丝袜一区在线| 国产精品小说在线| 热久久99这里有精品| 日韩视频亚洲视频| 亚洲欧美激情四射在线日| 中文字幕精品av| 久久免费视频这里只有精品| 国外成人在线视频| 久久天天躁狠狠躁夜夜躁| 亚洲国产精品久久久| 成人激情视频网| 欧美亚洲在线观看| 91视频九色网站| 欧美中文在线字幕| 国产精品1区2区在线观看| 中文字幕久久亚洲| 国内免费精品永久在线视频| 一区二区三区天堂av| 国产成人精品在线观看| 91成人天堂久久成人| 2019亚洲日韩新视频| 欧美在线亚洲在线| 日韩视频永久免费观看| 最好看的2019年中文视频| 亚洲free性xxxx护士白浆| 日韩精品中文字幕有码专区| 欧美午夜激情视频| 91久久国产精品91久久性色| 日韩欧美中文字幕在线播放| 亚洲摸下面视频| 欧美高清性猛交| 国产精品久久久久9999| 这里只有视频精品| 亚洲成人中文字幕| 国产成人精品电影久久久| 91美女福利视频高清| 国产精品美女免费看| 日韩精品小视频| 国产精品视频免费在线观看| 久久精品国产亚洲7777| 热久久这里只有| 国产丝袜精品第一页| 亚洲天天在线日亚洲洲精| 国产精品美女无圣光视频| 亚洲欧美中文字幕| 国外日韩电影在线观看| 欧美激情二区三区| 国产成人aa精品一区在线播放| 青青草一区二区| 欧美大码xxxx| 精品欧美激情精品一区| 色老头一区二区三区| 亚洲一区二区三区四区在线播放| 日韩一区av在线| 性色av一区二区三区在线观看| 亚洲欧美视频在线| 亚洲一区二区三区在线视频| 成人精品视频99在线观看免费| 久久国产精品免费视频| 免费不卡在线观看av| 久操成人在线视频| 91精品国产乱码久久久久久久久| 色多多国产成人永久免费网站| 狠狠色香婷婷久久亚洲精品| 在线视频欧美性高潮| 国产日韩中文在线| 亚洲精品国产精品乱码不99按摩| 欧美成人亚洲成人| 精品亚洲一区二区三区四区五区| 国产成+人+综合+亚洲欧美丁香花| 中文字幕精品影院| 国产精品美女999| 精品国产999| 91高清视频在线免费观看| 日本午夜精品理论片a级appf发布| 精品国产一区二区在线| 欧美电影免费在线观看| 97精品一区二区视频在线观看| 少妇精69xxtheporn| 亚洲精品久久久久久下一站| 在线观看中文字幕亚洲| 久久久久久12| 亚洲一区亚洲二区亚洲三区| 亚洲a级在线观看| 欧美日韩精品在线观看| 大胆欧美人体视频| 国产精品大片wwwwww| 91网站免费看| 国产欧美va欧美va香蕉在| 欧美高清视频在线观看|