程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 以字符情勢讀寫文件詳解及示例代碼

C說話 以字符情勢讀寫文件詳解及示例代碼

編輯:關於C++

C說話 以字符情勢讀寫文件詳解及示例代碼。本站提示廣大學習愛好者:(C說話 以字符情勢讀寫文件詳解及示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 以字符情勢讀寫文件詳解及示例代碼正文


在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 說話 以字符情勢讀寫文件的基本材料,後續持續添加相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved