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()關閉流,不關閉流的情況下,每次讀或寫數據後,文件指針都會指向下一個待寫或者讀數據位置的指針。