我想追加一个文件并同时更新它的一些行。 在按照我的意愿追加后,说我只想改变第一行,这就是我试过的:
outputptr = fopen(outputName.c_str(), "ar+b");
cout << ftell(outputptr) << " ";
rewind(outputptr);
cout << ftell(outputptr) << "\n";
fprintf(outputptr, "abc");
但是该代码不会用abc替换前三个字母,而是还附加文件并将abc写入结尾。对于这种情况,cout
为60和0,因此指针实际上移到了开头。
如何进入给定文件的任何一行并仅修改该行?
答案 0 :(得分:4)
模式字段中'a'
的定义说:
(我已经删除了与此问题相关的位 - 它也说了其他一些东西)
...重新定位操作(
fseek
,fsetpos
,rewind
)影响下一步 输入操作,但输出操作将位置移回到 文件结束。 ...
您可能想要"r+b"
。