C 速查手冊
11.7 檔案處理 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); |
以下函數利用陣列進行檔案的存取
函數名稱 | 功能 | 函數原型 |
---|---|---|
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); |