FILE檔案流的中對fopen、fseek、fread、fwrite,fprintf、fputs、fgets的理解
目前課題中使用,記錄下來方便以後檢視。
fopen函式用來開啟一個檔案,其呼叫的一般形式為:
FILE * fopen(const char *path,const char * mode);
fopen()函式中第一個形式引數表示檔名, 可以包含路徑和檔名兩部分。如:
"B:TEST.DAT"
"C://TC//TEST.DAT"
如果將路徑寫成"C:/TC/TEST.DAT"是不正確的, 這一點要特別注意。
第二個形式引數表示開啟檔案的型別。關於檔案型別的規定參見下表。
表 檔案操作型別
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字元 含義
────────────────────────────
"r" 開啟文字檔案只讀
"w" 建立文字檔案只寫
"a" 增補, 如果檔案不存在則建立一個
"r+" 開啟一個文字檔案讀/寫
"w+" 建立一個文字檔案讀/寫
"a+" 開啟或建立一個檔案增補
"b" 二進位制檔案(可以和上面每一項合用)
"t" 文這檔案(預設項)
返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回NULL,並把錯誤程式碼存在errno 中。
fseek
函式名: fseek
功 能: 重定位檔案流上的檔案指標位置
用 法: int fseek(FILE *stream, longoffset, int fromwhere);
stream:檔案指標,必須為已開啟的檔案
offfset:設定的偏移量,正數表示正向偏移
fromwhere:偏移開始的位置。有三種取值
SEEK_SET: 檔案開頭
SEEK_CUR:當前位置
SEEK_END:檔案結尾
描 述: 函式設定檔案指標stream的位置。如果執行成功,stream將指向以fromwhere為基準,偏移offset個位元組的位置。如果執行失敗(比如offset超過檔案自身大小),則不改變stream指向的位置。
返回值: 成功,返回0,否則返回其他值。
fread
函式原型:size_t fread(void*buff,size_t size,size_t count,FILE* stream)
作用:從檔案中讀入資料到指定的地址中
引數:第一個引數為接收資料的指標(buff),也即資料儲存的地址
第二個引數為單個元素的大小,即由指標寫入地址的資料大小,注意單位是位元組,通俗理解為一次讀取多大的位元組
第三個引數為元素個數,一共要讀取多少元素,即一共讀取的位元組數為size*count
第四個引數為提供資料的檔案指標,該指標指向檔案內部資料
返回值:讀取的總資料元素個數
注意:檔案指標是移動一個指標,讀取一個位元組,因此讀取完要求位元組數後,指標停留在最後一個位元組處,直到下次讀取或者fseek才會移動指標。
fwrite
size_t fwrite(const void* buffer,size_t size, size_t count, FILE* stream);
作用:向檔案寫入一個數據塊
返回值:返回實際寫入的資料塊數目
(1)buffer:是一個指標,是準備要寫入檔案的資料地址
(2)size:要寫入檔案的一個數據項的位元組個數;
(3)count:要進行寫入size位元組的資料項的個數,一共要寫入size*count個位元組;
(4)stream:目標檔案指標;
(5)返回實際寫入的資料項個數count。
fprintf
fprintf( ) 函式中格式化的規定與printf( ) 函式相同,所不同的只是 fprintf()函式是向檔案中寫入。而printf()是向螢幕輸出。
fprintf() 函式的返回值為實際寫入檔案中的位元組個數(位元組數)。如果寫錯誤, 則返回一個負數。
int fprintf(FILE *stream, char*format, <variable-list>);
例如 b= fprintf(fp,"%d",a);指像fp指向的檔案裡列印一個整數,值為a,b是4.
fputs、fputc
int fputs(char *string, FILE*steam);
int fputc(int ch, FILE*steam);
fputs()函式返回0時表明將string指標所指的字串寫入steam指向的檔案中的操作成功, 返回非0時, 表明寫操作失敗。
fputc()函式返回一個向steam指向的檔案中寫字元ch的值, 返回0表示寫操作成功, 否則返回EOF(檔案結束結束其值為-1,
fgets、fgetc
char fgets(char *string, intn, FILE *steam);
int fgetc(FILE *steam);
fgets()函式從檔案中讀取至多n-1個字元(n用來指定字元數), 並把它們放入string指向的字串中, 在讀入之後自動向字串未尾加一個空字元, 讀成功返回string指標, 失敗返回一個空指標。
fgetc()函式返回檔案當前位置的一個字元, 讀錯誤時返回EOF。