也可以由陣列或檔案輸入資料,或是輸出資料到陣列或檔案中。本篇提供檔案處理的部份,有關標準輸出、輸入裝置及陣列方面,請參考 C 語言相關的輸出與輸入
C 語言利用結構 FILE 處理檔案,所有處理檔案的相關資訊都會儲存到該結構之中,至於實際的細節我們不用深入探討,而需要曉得 stdio.h 中進行檔案處理,大多需要利用指向該結構的指標即可。
以下函數可開啟檔案、刪除檔案或更改檔案名稱
函數名稱 | 功能 | 函數原型 |
---|---|---|
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 fputc(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); |
您可以繼續參考
輸出與輸入 stdio.h
- int getchar(void);
- char *gets(char *s);
- int putchar(int c);
- int puts(const char *s);
- int printf(const char *format, ...);
- int sprintf(char *s, const char *format, ...);
- int scanf(const char *format, ...);
- int sscanf(char *s, const char *format, ...);
- FILE *fopen(const char *filename, const char *mode);
- FILE *freopen(const char *filename, const char *mode, FILE *stream);
- int fflush(FILE *stream);
- int fclose(FILE *stream);
- int remove(const char *filename);
- int rename(const char *oldname, const char *newname);
- int fprintf(FILE *stream, const char *format, ...);
- int fscanf(FILE *stream, const char *format, ...);
- int fgetc(FILE *stream);
- char *fgets(char *s, int n, FILE *stream);
- int fputs(const char *s, FILE *stream);
- int fputs(const char *s, FILE *stream);
- size_t fread(void *ptr, size_t size, siz_t nobj, FILE *stream)
- size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream)
- int fseek(FILE *stream, long offset, int origin);
- long ftell(FILE *stream);
- void rewind(FILE *stream);
沒有留言:
張貼留言