簡體   English   中英

fprintf總是寫到文件的末尾,即使我之前做過rewind(fileptr),C ++

[英]fprintf always write to the end of the file even when I do rewind(fileptr) before, c++

我想附加一個文件並同時更新其某些行。 在按需添加后,說我只想更改第一行,這是我嘗試過的:

outputptr = fopen(outputName.c_str(), "ar+b");
cout << ftell(outputptr) << " ";
rewind(outputptr);
cout << ftell(outputptr) << "\n";
fprintf(outputptr, "abc");

但是該代碼不會用abc代替前三個字母,而是還會附加文件並將abc寫入末尾。 在這種情況下, cout分別為60和0,因此指針實際上移到了開頭。

如何轉到給定文件的任何行並僅修改該行?

模式字段中'a'的定義是:

(我已刪除了該問題的相關內容,它也說明了其他一些內容)

...重定位操作( fseekfsetposrewind )會影響下一個輸入操作,但輸出操作會將位置移回文件末尾。 ...

您可能需要"r+b"

http://www.cplusplus.com/reference/cstdio/fopen/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM