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

要在一个文件开头就写入str,但不删除下面本来的文本内容,在写入前先指定了指针到文件开头,怎么没用,该怎么做呢?
fseek(fp[i],0,0);
fprintf(fp[i], "%s\n", str);
是用的添加模式,a,但是都添加到文件的最后面去了,我要添加在文件的最开头
fseek试了好几种,都无法改变添加在最后的情况

还是用临时文件吧!这是个可行的方法,示例程序:

//---------------------------------------------------------------------------

#include <stdio.h>

#define FILENAME "c:\\a.txt" /*需要插入内容的文件路径*/

int main(void)
{
FILE *f=fopen(FILENAME,"rb+");/*打开需要插入内容的文件*/
FILE *tmpf=tmpfile();/*创建临时文件*/
char c,strin[80];
puts("input string:");

gets(strin);/*读取需要插入的字符串*/

fputs(strin,tmpf);/*将要插入的字符串首先写入临时文件*/

while ((c=fgetc(f))!=EOF) /*将原文件内容写入临时文件*/
fputc(c,tmpf);

rewind(tmpf);/*重置临时文件位置指针到文件开头*/

rewind(f);/*重置原文件位置指针到文件开头*/

while ((c=fgetc(tmpf))!=EOF)/*重新为原文件写入内容*/
fputc(c,f);

fclose(f);/*关闭原文件,临时文件会自动处理,无需手动关闭*/
return 0;
}
//---------------------------------------------------------------------------
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-30
a参数应该是追加到文件末尾,似乎没有直接的解决办法.
可以新建立一个文件把前面的内容先写入,然后再导入以前的内容,删除不要的文件,再改名。太麻烦了。
楼主可以查查seek来改变文件的位置指针,看看有没有好办法解决
第2个回答  2008-05-30
你可以打开一个新的文件,从头写入你想写的str内容。然后再读取原来的文件,读取数据,然后把数据写入到str这个文件内容的后面。

C++中如何在一个文件开头输入文本
define FILENAME "c:\\\\a.txt" \/*需要插入内容的文件路径*\/ int main(void){ FILE *f=fopen(FILENAME,"rb+");\/*打开需要插入内容的文件*\/ FILE *tmpf=tmpfile();\/*创建临时文件*\/ char c,strin[80];puts("input string:");gets(strin);\/*读取需要插入的字符串*\/ fputs(strin,tmpf);...

C++中如何在一个文件开头写入文本
文件一打开,读写指针就在文件开头。如果不是在文件开头进行更新,则需fseek()移动指针到更新位置。另外,如果更新之后读或者读之后更新,也要用一次fseek()指定读写位置。以上回答适用于C\/C++.--- 写入几个字节,就覆盖掉几个字节。但没有覆盖掉的不受影响。如果想在文件开始插入若干字节而不覆盖原...

c++写文件问题,如何写文件的时候,在文件头部加入想要的内容而不覆盖原...
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来 然后seek到文件头,写入你要写入的部分 最后把刚刚“全部读出来”的给写回去。另:如果要用我叙述的方法,以ios::out方式打开会死 p.s. 看你的代码,你...

C++如何文件输入输出?
include <iostream>\/\/标准的输入输出头文件#include <fstream>\/\/读写文件的头文件using namespace std;\/\/名字空间int main(){ifstream in("input.txt");\/\/建立输入流,从input.txt读取数据ofstream out("output.txt");\/\/建立输出流,将数据写入output.txtint a;double b;char c;cin>>a>>b>>...

DEV C++如何进行文件输入输出,最好能给一个过程。
回答:或者定义一个临时变量temp加上cin>>temp;

c++ 文本文件开头插入“### 文件名 ###\\n”
cout<<"请输入想打开的文件名:";cin>>filename;head="### "+filename+" ###\\n";data=head+readfile(filename);cout<<data;fstream fileform;fileform.open(filename.c_str(),ios::out | ios::in);fileform.seekp(0,ios::beg);fileform<<data;fileform.seekg(0,ios::beg);while(...

请问在c++中如何进行文件的输入输出以及读入?
C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就...

C++ 如何用创建txt文件,并且写入内容
wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

C++文件的输入和输出
SaveFile.close(); } 这个程序将在当前运行目录下建立一个名为cpp-home.txt的文件,并向它写入“Hello World!”。 下面给出各行的含义: #include —— 你需要包含此文件以使用C++的文件输入\/输出函数。注意:一旦包含了这个文件,你不再需要(为了使用cout\/cin)包含iostream.h,因为fstream.h已经自动包含了它。 在...

C++如何创建文件并写入
main(void){ FILE *fp;fp = fopen("test.c","w"); \/\/ 已文件后缀名为.c,"w"方式打开文件fprintf(fp,"%s","#include <stdio.h>\\n");fprintf(fp,"%s","int main(void)\\n");fprintf(fp,"%s","{\\n");fprintf(fp,"%s","printf(\\"hello World!\\");\\n");fprintf(...

相似回答