C 速查手冊

標準程式庫的檔案處理 stdio.h

標頭檔 stdio.h 宣告許多輸出、輸入的函數函數 (function) ,包括從標準輸入裝置輸入資料,然後傳送到標準輸出裝置。標準輸入裝置通常是鍵盤,而標準輸出裝置通常是螢幕。

也可以由陣列 (array) 或檔案輸入資料,或是輸出資料到陣列或檔案中。本篇提供檔案處理的部份,有關標準輸出、輸入裝置及陣列方面,請參考 C 速查手冊 - 輸入輸出 stdio.h

C 語言利用結構 (structure) FILE 處理檔案,所有處理檔案的相關資訊都會儲存到該結構之中,至於實際的細節我們不用深入探討,而需要曉得 stdio.h 中進行檔案處理,大多需要利用指向該結構的指標 (pointer) 即可。

以下函數可開啟檔案、刪除檔案或更改檔案名稱

函數名稱功能函數原型
fopen回傳指定檔案的資訊給 FILE 型態的結構指標FILE *fopen(const char *filename, const char *mode);
freopen回傳指定檔案的資訊給 FILE 型態的結構指標,並重導串流的方向FILE *freopen(const char *filename, const char *mode, FILE *stream);
fflush強制將緩衝區中的輸出串流寫到檔案中int fflush(FILE *stream);
fclose將緩衝區中為輸出資料輸出,清除輸入資料,接著關閉串流int fclose(FILE *stream);
remove刪除檔案int remove(const char *filename);
rename將檔案更名int rename(const char *oldname, const char *newname);

以下函數進行檔案的格式化字串處理

函數名稱功能函數原型
fprintf將格式化字串輸出到檔案int fprintf(FILE *stream, const char *format, ...);
fscanf從檔案輸入格式化字串int fscanf(FILE *stream, const char *format, ...);

以下函數進行檔案的字元及字串的處理

函數名稱功能函數原型
fgetc 從檔案中取得字元int fgetc(FILE *stream);
fgets從檔案中取得單行字串char *fgets(char *s, int n, FILE *stream);
fputc把字元放到檔案中int fputs(const char *s, FILE *stream);
fputs把字串放到檔案中int fputs(const char *s, FILE *stream);
getc從檔案中取得字元int getc(FILE *stream);
putc從檔案中取得單行字串int putc(int c, FILE *stream);

以下函數利用陣列進行檔案的存取

函數名稱功能函數原型
fread將檔案中具有 nobj 個元素,每個元素大小為 size 的資料讀進陣列 ptr 中size_t fread(void *ptr, size_t size, siz_t nobj, FILE *stream)
fwrite將陣列 ptr 中具有 nobj 個元素,每個元素大小為 size 的資料寫到檔案中size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream)

以下函數處理檔案可存取的位置

函數名稱功能函數原型
fseek 設定檔案資料存取的位置int fseek(FILE *stream, long offset, int origin);
ftell 回傳目前檔案資料可存取的位置long ftell(FILE *stream);
rewind 將檔案存取位置重新設為檔案開頭void rewind(FILE *stream);

回 C 速查手冊 - 標準程式庫導覽
回 C 速查手冊首頁