91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

fgetc與fputc函數怎么在C語言中使用

發布時間:2021-01-11 16:32:16 來源:億速云 閱讀:144 作者:Leah 欄目:開發技術

這篇文章給大家介紹fgetc與fputc函數怎么在C語言中使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

字符讀取函數 fgetc

fgetc 是 file get char 的縮寫,意思是從指定的文件中讀取一個字符。fgetc() 的用法為:

int fgetc (FILE *fp);

fp 為文件指針。fgetc() 讀取成功時返回讀取到的字符,讀取到文件末尾或讀取失敗時返回EOF。

EOF 是 end of file 的縮寫,表示文件末尾,是在 stdio.h 中定義的宏,它的值是一個負數,往往是 -1。fgetc() 的返回值類型之所以為 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 ){
    puts("Fail to open file!");
    exit(0);
  }
  //每次讀取一個字節,直到讀取完畢
  while( (ch=fgetc(fp)) != EOF ){
    putchar(ch);
  }
  putchar('\n'); //輸出換行符
  fclose(fp);
  return 0;
}

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

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

程序第 13 行是關鍵,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 ){
    puts("Fail to open file!");
    exit(0);
  }
  //每次讀取一個字節,直到讀取完畢
  while( (ch=fgetc(fp)) != EOF ){
    putchar(ch);
  }
  putchar('\n'); //輸出換行符
  if(ferror(fp)){
    puts("讀取出錯");
  }else{
    puts("讀取成功");
  }
  fclose(fp);
  return 0;
}

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

字符寫入函數 fputc

fputc 是 file output char 的所以,意思是向指定的文件中寫入一個字符。fputc() 的用法為:

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 ){
    puts("Fail to open file!");
    exit(0);
  }
  printf("Input a string:\n");
  //每次從鍵盤讀取一個字符并寫入文件
  while ( (ch=getchar()) != '\n' ){
    fputc(ch,fp);
  }
  fclose(fp);
  return 0;
}

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

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

關于fgetc與fputc函數怎么在C語言中使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肥西县| 古蔺县| 阿拉尔市| 新平| 溆浦县| 微山县| 墨竹工卡县| 古浪县| 武隆县| 天水市| 宁阳县| 嵩明县| 扎鲁特旗| 麻江县| 厦门市| 和政县| 宽甸| 安新县| 东城区| 乐亭县| 五台县| 铁力市| 义马市| 包头市| 富民县| 增城市| 汾阳市| 古浪县| 紫金县| 兰溪市| 东台市| 二连浩特市| 教育| 张家川| 潞城市| 深泽县| 宿迁市| 盱眙县| 土默特右旗| 太和县| 清镇市|