我是c ++的新手。我制作了以下程序,该程序成功运行并完成了预期的工作,即将一个文件的数据附加到另一个文件中。
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
void show(const char *file)
{
char data[90];
fstream f(file,ios::in);
while(!f.eof())
{
f.getline(data,90,'\n');
puts(data);
}
}
int main()
{
char data[90];
cout<<"Contents of files before data integration.\nFile 1:\n";
show("file1.txt");
cout<<"\nFile 2\n";
show("file2.txt");
fstream f1("file1.txt",ios::out|ios::app);
fstream f2("file2.txt",ios::in);
while(!f2.eof())
{
f2.getline(data,90,'\n');
f1<<data<<'\n';
}
cout<<"\n\nFile 1 after data integration: \n\n";
show("file1.txt");
}
当我单独检查时,文件成功地将数据附加到file1中,但程序仅打印其旧内容。任何人都可以告诉我可能的原因是什么,以及相同的补救措施。
答案 0 :(得分:2)
答案 1 :(得分:2)
在关闭流f1
之前,已写入其中的内容可能驻留在缓冲区中。如果发生这种情况,最后一次调用show
将显示文件的旧内容或(可能更糟)新内容的不完整版本。
f1
。 (如果您愿意,也可以与f2
相同。)在while
循环之后和最后一次调用show
之前添加以下行:
f1.close();
f2.close();