C++中如何在一个文件开头写入文本

来源:百度知道 编辑:UC知道 时间:2024/05/05 18:33:24
要在一个文件开头就写入str,但不删除下面本来的文本内容,在写入前先指定了指针到文件开头,怎么没用,该怎么做呢?
fseek(fp[i],0,0);
fprintf(fp[i], "%s\n", str);
用r+也会把原来的第一行覆盖掉阿

没必要fseek();
关键是打开方式,即fopen()的第二个参数,必须是"r+"或"r+b".
r+的意思是打开一个已存在的文件来读或进行更新。如果以二进制方式进行更新则用r+b.
文件一打开,读写指针就在文件开头。如果不是在文件开头进行更新,则需fseek()移动指针到更新位置。
另外,如果更新之后读或者读之后更新,也要用一次fseek()指定读写位置。

以上回答适用于C/C++.

----
写入几个字节,就覆盖掉几个字节。但没有覆盖掉的不受影响。
如果想在文件开始插入若干字节而不覆盖原文件内容,那是在只打开这一个文件的前提下不可能做到的。不只是在文件开头,在文件中的任何位置插入新的内容都是不可能的。

要想达到你的目的----在文件开头插入内容,只能先把要插入的内容写入新文件,再打开原文件读出并随之写入新文件。如果新文件还要保持原文件的文件名,那还要在程序中删除原文件并将新文件更名。