C語言文件操作函數概要(stdio.h)

C語言文件操作函數概要(stdio.h)

fopen 打開一個文件 
fclose 關閉一個文件 
fgetc 從文件中讀取一個字符 
fputc 寫一個字符到文件中去 fgets 從文件中讀取一個字符串 
fputs 寫一個字符串到文件中去 
fprintf 往文件中寫格式化數據 
fscanf 格式化讀取文件中數據 
fread 以二進制形式讀取文件中的數據 
fwrite 以二進制形式寫數據到文件中去 
getw 以二進制形式讀取一個整數 
putw 以二進制形式存貯一個整數 
feof 文件結束 
ferror 文件讀/寫出錯 
clearerr 清除文件錯誤標誌 
ftell 瞭解文件指針的當前位置 
rewind 文件定位函數
fseek 隨機定位
“r”.爲讀而打開文本文件.(不存在則出錯) 
“w”.爲寫而打開文本文件.(若不存在則新建,反之,則從文件起始位置寫,原內容將被覆蓋) 
“a”.爲在文件後面添加數據而打開文本文件.(若不存在,則新建;反之,在原文件後追加)
“r+”.爲讀和寫而打開文本文件.(讀時,從頭開始;在寫數據時,新數據只覆蓋所佔的空間,其後不變)
“wb”.爲寫而打開二進制文件. 
“rb”.爲讀而打開二進制文件 
“ab”.爲在文件後面添加數據而打開一個二進制文件.
“rb+”.爲讀和寫而打開二進制文件.只是在隨後的讀寫時,可以由位置函數設置讀和寫的起始位置.
“w+”.首先建立一個新文件,進行寫操作,隨後可以從頭開始讀.(若文件存在,原內容將全部消失) 
“a+”.功能與”a”相同;只是在文件尾部添加新的數據後,可以從頭開始讀. 
“wb+”.功能與”w+”同.只是在隨後的讀寫時,可以由位置函數設置讀和寫的起始位置. 
“ab+”.功能與”a+”相同;只是在文件尾部添加新數據之後,可以由位置函數設置開始讀的起始位置.

函數介紹

open函數  --- 打開一個文件流
函數原型:FILE*  fopen(const char *path, const char *mode);
參數:參數path是需要打開文件的文件名,通常把它叫做文件的路徑,
         參數 mode 是打開文件的權限(只讀、只寫、讀寫等)。
返回值:打開成功返回指向打開文件的指針,後序可以通過這個指針來訪問該文件。打開失敗則返回NULL。

fgetc/fputc函數     ---讀取/寫入一個字節
函數原型:int fgetc(FILE *stream);
參數:打開的文件流,即fopen函數的返回值。
返回值:返回所讀取的一個字節。如果讀到文件末尾或者讀取出錯時返回EOF。

fgets/fputs函數   ---讀取/寫入一個字符串
函數原型:char *fgets(char *str, int size, FILE *stream); 
參數:參數str,存儲着需要寫入的字符串/用於存儲讀出來的數據
         參數size是讀取或者寫入的字符創的長度。
         參數stream是打開的文件流,fopen函數的返回值。
返回值:調用成功,將讀取的字符串返回,使用fgets函數讀取的時候會自動在字符串後邊加上一個‘\0’,失敗返回NULL。

fread函數   ---從文件流中讀取一段數據
函數原型size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 
參數:參數ptr用於存放讀取的內容。由於讀取的內容的類型不固定(可叫做讀取記錄吧)有可能是一個字符,整型或者結構體,所以是void* 類型的。
         參數size 是讀取記錄的大小。 
         參數nmemb是讀取記錄的條數。
         stream是文件流,fopen函數的返回值。
返回值:返回的是成功讀取到的字節數。

fwrite函數   ---向文件裏邊寫數據
函數原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
參數:參數ptr是想要寫入到文件流裏邊去的內容。
         參數size是將要寫入元素的大小。
         參數nmemb是將要寫入元素的個數。
         參數stream是將要寫入的地方。
返回值:返回成功寫入數據的字節數。

fprintf函數   ---將格式化的數據寫入文件
函數原型:int fprintf(FILE *stream, const char *format, ...);
參數:參數stream是文件指針
         參數format格式化字符串
         後邊跟輸出列表
返回值:本次寫入操作寫到文件中的字節數。

fscanf函數  ---格式化的數據讀出到變量
函數原型:int fscanf(FILE *stream, const char *format, ...);
參數:參數stream是文件指針
         參數format格式化字符串
         後邊跟將要被賦值的變量
返回值:本次成功獲取數據的字節數。

fseek函數  ---控制文件指針偏移
函數原型:int fseek(FILE *stream, long offset, int whence);
參數:參數stream是文件指針。
         offset是偏移量。
         whence是指偏移方式。有如下三種值可選:
             SEEK_SET 從距文件開頭offset 位移量爲新的讀寫位置. 
             SEEK_CUR 以目前的讀寫位置往後增加offset 個位移量.
             SEEK_END 將讀寫位置指向文件尾後再增加offset 個位移量. 
說明:當whence 值爲SEEK_CUR 或SEEK_END 時, 參數offset 允許負值的出現.
          給出兩種比較特別的使用方式
            1)、將文件指針移動到開頭:fseek(fd, 0, SEEK_SET);
            2)、將文件指針移動到結尾:fseek(fd, 0, SEEK_END);
返回值:調用成功返回0,失敗返回-1,errno會存放錯誤代碼。

ftell函數   ---獲取當前文件指針的位置
函數原型:long ftell(FILE *stream);
返回值:文件指針相對於文件開頭的偏移量。

rewind函數  ---將文件指針指向文件的開頭
函數原型:void rewind(FILE *stream);

feof函數  ---判斷文件指針是否指向文件結尾
函數原型:int feof(FILE *stream);

注意事項

寫完數據後要調用fclose()關閉流,不關閉流的情況下,每次讀或寫數據後,文件指針都會指向下一個待寫或者讀數據位置的指針。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章