文件操作的最後一環是**狀態檢測**與**錯誤處理**。本文詳細講解三大文件檢測函數 (feof/ferror/clearerr)、C 庫文件分類與完整頭文件清單,並給出本章核心知識點小結。
feof:文件結束檢測int feof(FILE *stream);
while (!feof(fp)) { process(fgetc(fp)); } 或讀取後檢查 if (feof(fp)) break;。EOF 值可能為合法數據,**必須用 feof 區分**。ferror:讀寫錯誤檢測int ferror(FILE *stream);
perror 輸出錯誤描述:if (ferror(fp)) perror("File error");。clearerr:清除錯誤與 EOF 標誌void clearerr(FILE *stream);
#include 引入。鐵律:調用庫函數前,**必須**包含其原型所在的頭文件。
| 功能域 | 頭文件 | 核心內容 |
|---|---|---|
| 內存管理 | alloc.h | malloc/free/farcalloc 等 (Borland 專用) |
stdlib.h | malloc/free/atoi/qsort/rand 等 (ANSI 標準) | |
mem.h | memcpy/memset/memcmp 等 (亦在 string.h) | |
| 字符/字符串 | ctype.h | isalpha/isdigit/toupper/toascii 等 |
string.h | strcpy/strcat/strlen/strcmp/strstr 等 | |
stdio.h | FILE、printf/scanf/fopen/fclose 等標準 I/O | |
| 數學/浮點 | math.h | sin/cos/sqrt/pow/HUGE_VAL/matherr 結構 |
float.h | 浮點參數 (DBL_MAX, FLT_EPSILON 等) | |
values.h | 機器相關常量 (MAXINT, MAXDOUBLE 等) | |
| 系統/底層 | dos.h | DOS/8086 中斷、REGS、SREGS、int86 等 |
bios.h | IBM PC ROM BIOS 子程序調用 | |
io.h | 低級 I/O (open/read/write/lseek/close) | |
| 目錄/路徑/文件屬性 | dir.h | 目錄結構、路徑操作、findfirst/findnext |
fcntl.h | open 符號常量 (O_RDONLY 等) | |
sys\stat.h | 文件狀態結構、創建/打開屬性常量 | |
| 進程/信號/異常 | process.h | spawn/exec 族、進程管理 |
signal.h | SIG_DFL/SIG_IGN、signal/raise | |
setjmp.h | longjmp/setjmp、jmp_buf | |
| 時間/日期 | time.h | time/ctime/localtime/gmtime/asctime/difftime |
sys\time.h | time_t 類型定義 | |
sys\types.h | ftime/timeb 結構 | |
| 其他 | assert.h | assert 斷言宏 (調試用) |
errno.h | 錯誤碼助記符 (EDOM, ERANGE 等) | |
stdarg.h | va_list/va_start/va_arg/va_end (可變參數) | |
stddef.h | size_t/ptrdiff_t/NULL/wchar_t 等通用類型 | |
share.h | 文件共享鎖參數 | |
graphics.h | 圖形庫函數、顏色常量、特殊結構 | |
conio.h | 控制台 I/O (getch/clrscr/gotoxy/kbhit 等) | |
limits.h | 環境參數、編譯限制、數值範圍 |
fopen/fclose)。fgetc/fputc)、字符串 (fgets/fputs)、數據塊 (fread/fwrite)、格式化 (fscanf/fprintf)**。fseek/rewind) 實現**隨機讀寫**。feof 判斷結束、ferror 判斷錯誤、clearerr 清除標誌**。fopen 返回值**,失敗即處理/退出。b)** 進行隨機訪問、結構體讀寫、非文本數據。fread 項目數、fgets 非 NULL)。ferror + perror 獲取系統級錯誤信息。fflush 刷新輸出緩衝區** (僅輸出/更新流)。fseeko/ftello (POSIX) 或 _fseeki64/_ftelli64 (Windows)。文件操作是程序與持久化存儲的橋樑。掌握 **流模型、模式選擇、四種讀寫單位、隨機定位、狀態檢測、錯誤處理** 六大支柱,配合標準庫 30+ 頭文件的功能域分類,即可應對從配置文件解析到嵌入式數據記錄的各類文件交互場景。