首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 檔案輸出只保留最後一次?fopen 模式搞錯了!

     編輯:程式設計疑難解答

現象:迴圈中多次 fopen 寫入,檔案只有最後一次的資料。

原因

使用 "w" 或 "w+" 模式開啟檔案時,會清空檔案內容(截斷為 0 位元組)。每次迴圈重新開啟都會把前一次寫入的資料覆蓋掉。

標準檔案模式對照表

模式說明
r唯讀,檔案必須存在
w唯寫,**建立或清空**檔案
a附加寫入,**保留原內容**,指標在 EOF
r+讀寫,檔案必須存在
w+讀寫,**建立或清空**
a+讀寫附加,建立新檔或保留原內容

解決方案

  1. 改用 "a" 或 "a+" 模式:每次開啟自動定位到檔案末尾。
  2. 或在迴圈外開啟一次,迴圈內只寫入,結束再 fclose(效能更好)。
FILE* fp = fopen("log.txt", "a"); // 附加模式
for (...) {
    fprintf(fp, "第 %d 筆資料\n", i);
}
fclose(fp);

記住:「w 會洗掉檔案,a 才會累積」。

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