[英]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'
的定義是:
(我已刪除了該問題的相關內容,它也說明了其他一些內容)
...重定位操作(
fseek
,fsetpos
和rewind
)會影響下一個輸入操作,但輸出操作會將位置移回文件末尾。 ...
您可能需要"r+b"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.