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

C語言文件操作入門:FILE 指標、fopen/fprintf/fscanf/fclose 完整流程

     編輯:關於C

文件操作四步曲

  1. 打開:FILE *fp = fopen("路徑", "模式");
  2. 讀/寫:fprintf 寫入、fscanf 讀取。
  3. 關閉:fclose(fp); 強制刷新緩衝區至磁盤。
  4. 錯誤檢查:fopen 失敗返回 NULL,必須判斷。

寫入文件完整示例

FILE *fp = fopen("/Users/yonghu/Desktop/ok.txt", "w");  // "w" 截斷/創建\
if (!fp) { perror("open failed"); return 1; }\
fprintf(fp, "hello,wo來了");\
fclose(fp);\
printf("文件寫入成功\\n");

讀取文件完整示例

FILE *fp = fopen("/Users/yonghu/Desktop/ok.txt", "r");\
if (!fp) { perror("open failed"); return 1; }\
char str[100];\
fscanf(fp, "%s", str);  // 讀取一個單詞(遇空白停止)\
fclose(fp);\
printf("讀取文件內容:\\n %s", str);

關鍵模式對照表

模式含義文件不存在文件存在寫入位置
r只讀失敗保留開頭
w只寫創建截斷(清空)開頭
a追加寫創建保留末尾
r+讀寫失敗保留開頭
w+讀寫創建截斷開頭
a+讀寫追加創建保留末尾

緩衝區機制關鍵點

  • 標準 I/O 為全緩衝(文件)或行緩衝(終端)。
  • fprintf 寫入用戶空間緩衝區,未滿 512B/4KB 時不寫入磁盤。
  • 程序異常終止會導致緩衝區數據丟失,文件不完整。
  • 只有 fclose 或 fflush 能強制落盤,保證數據完整性。

進階讀寫函數

類別函數用途
字符fgetc / fputc單字符讀寫
字符串fgets / fputs整行讀寫(含換行符處理)
格式化fscanf / fprintf類 scanf/printf,針對文件流
二進制塊fread / fwrite結構體、數組批量讀寫

文件定位函數

  • rewind(fp):位置指針回文件開頭。
  • fseek(fp, offset, SEEK_SET/CUR/END):相對開頭/當前/末尾偏移。
  • ftell(fp):獲取當前偏移量(相對開頭)。
  • feof(fp):判斷是否到達文件末尾。

最佳實踐清單

  1. 打開後立即檢查 NULL。
  2. 使用 "rb"/"wb" 二進制模式避免換行符轉換(跨平台關鍵)。
  3. 關鍵數據寫入後調用 fflush(fp) 而非等待 fclose。
  4. 結構體二進制讀寫注意對齊填充、字節序、指針無效問題,首選文本/序列化格式(JSON/Protobuf)。
  5. 臨時文件用 tmpfile() 自動清理。

掌握 FILE* 流式操作模型,是 C 語言持久化存儲、配置讀取、日誌記錄、數據交換的基石技能。

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