我这段程序保存文件后文件被清空了!

来源:百度知道 编辑:UC知道 时间:2024/05/11 16:18:32
程序如下://FILENAME是保存路径,ch是要保存的串,其中遇到'^'就换行保存
cout<<" 保存进行中..."<<endl<<endl;
FILE *fout;
fout=fopen(FILENAME,"w");
if (fout==NULL)
{
cout<<" Failed to open the file"<<endl;
return;
}
int i=0;
for (i=0;ch[i]!='\0';i++)
{
if (ch[i]=='^') fprintf(fout,"%c",'\n');
else fprintf(fout,"%c",ch[i]);
}
cout<<" 保存完毕!"<<endl<<endl;
哪里错了??谢谢啦……

写完文件之后,要关闭文件
fclose(fout);
我们执行写文件,操作系统是先把内容写在cache中,然后按一定的策略定期地写到硬盘上。然后当执行fclose关闭文件句柄,此时操作系统就会把未写到硬盘的cache中数据全部写到硬盘上,保证其存储。
如果不执行fclose的话,会出现三种情况:
写的数据全部在cache中,文件中数据量为0
写的数据有一部分地cache中,文件中数据只有前一部分
写的数据很幸运地已经全部被写到硬盘上,文件数据齐全

楼主碰到的就是第一种情况,因为你写的数据比较少,所以还在cache中

没有关闭文件