首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C 語言文件操作:標準緩衝文件函數 fopen/fclose/fread/fwrite/fseek 詳解

     編輯:C 語言基礎

文件指針與打開模式

`FILE *fp = fopen("path", "mode");` 模式字符串:

模式含義
r只讀,文件必須存在
w只寫,截斷/創建
a追加,創建
r+讀寫,文件必須存在
w+讀寫,截斷/創建
a+讀寫追加
b二進制(如 `rb` `wb`)

核心函數

  • `fclose(fp)`:關閉,刷新緩衝區,釋放結構體。
  • `fgetc`/`fputc`:字符讀寫。
  • `fgets`/`fputs`:行讀寫(`fgets` 保留 `\n`,安全替代 `gets`)。
  • `fread(ptr, size, count, fp)` / `fwrite`:二進制塊讀寫,返回實際項數。
  • `fprintf`/`fscanf`:格式化文件 I/O。
  • `fseek(fp, offset, origin)`:移動位置指針。`origin`:`SEEK_SET`(0) `SEEK_CUR`(1) `SEEK_END`(2)。
  • `ftell(fp)`:返回當前偏移量。
  • `rewind(fp)`:等價 `fseek(fp,0,SEEK_SET)`。
  • `feof(fp)`/`ferror(fp)`:檢測結束/錯誤。

文本 vs 二進制

  • 文本模式:Windows 換行 `\r\n` ↔ `\n` 轉換,可能改變字節數。
  • 二進制模式:字節流原樣讀寫,跨平台一致,適合結構體/圖片/數據庫。

常見錯誤

  • 未檢查 `fopen` 返回 NULL 直接操作 → 段錯誤。
  • 讀寫模式不匹配(`r` 打開寫入)。
  • 結構體含指針直接 `fwrite` → 指針值無意義,需序列化。
  • 忘記 `fclose` 導致資源洩漏、數據未刷新。

總結

標準 I/O 庫提供緩衝、格式化、隨機訪問完整功能,掌握模式選擇、錯誤檢查、二進制序列化、位置控制,即可實現健壯的文件持久化邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved