C 語言通過 stdio.h 提供文件操作接口,核心函數包括:
fopen / fclose:打開/關閉文件流fread / fwrite:二進制塊讀寫fgets / fputs:文本行讀寫fprintf / fscanf:格式化讀寫fflush:強制刷新緩衝區| 模式 | 含義 | 文件不存在 | 文件存在 | 定位 |
|---|---|---|---|---|
| r | 只讀 | 失敗 | 保留內容 | 開頭 |
| w | 只寫 | 創建 | 截斷為0 | 開頭 |
| a | 追加 | 創建 | 保留內容 | 結尾 |
| r+ | 讀寫 | 失敗 | 保留內容 | 開頭 |
| w+ | 讀寫 | 創建 | 截斷為0 | 開頭 |
| a+ | 讀寫追加 | 創建 | 保留內容 | 結尾 |
加 b 後綴(如 rb)表示二進制模式,跨平台處理換行符時必須使用。
下面示例演示讀取文件、寫入文件、以及文件複製(分塊讀寫,避免大文件內存溢出):
#include#include int main() { char buf[64] = "hello world!"; /* 寫入文件 */ FILE *fp2 = fopen("./file1", "w"); if (!fp2) { perror("文件打開異常!"); exit(-1); } fwrite(buf, 1, 64, fp2); fclose(fp2); /* 複製文件:file1 -> file2,每次讀寫 20 字節 */ FILE *fp3 = fopen("./file1", "r"); if (!fp3) { perror("文件讀取異常!"); exit(-1); } FILE *fp4 = fopen("./file2", "w"); if (!fp4) { perror("文件寫入異常!"); exit(-1); } while (1) { size_t num = fread(buf, 1, 20, fp3); if (num <= 0) break; fwrite(buf, 1, num, fp4); } fclose(fp3); fclose(fp4); return 0; }
fopen 後必須判空,使用 perror 輸出系統錯誤信息。fflush 可強制落盤。\n 轉換為 \r\n,二進制模式不轉換,處理圖片/結構體時必須用 b 模式。