【发布时间】:2016-04-07 19:00:29
【问题描述】:
我正在使用带有 Code::Blocks 的 GNU C++。 在以下代码中,我使用 ios::app 将数据附加到文件 "employee.txt" 的末尾。该代码在 Turbo C++ 中运行良好,但 GNU C++ 似乎造成了一些麻烦。没有数据存储在文件中。可能的原因和解决方法是什么?
编辑-尝试了此处给出的解决方案后,它起作用了,但现在又出现了同样的问题。即使输入数据后,文件仍然是空的。我已经更新了代码。
if(ch==1)
{
cout<<"Enter Data for employee\n";
e.getdata();
f.open("employee.txt", ios::app|ios::binary);
f.write((char*)&e, sizeof(employee));
f.close();
}
if(ch==2)
{
int en;
int flag=0;
cout<<"Enter Employee No. to search\n";
cin>>en;
f.open("employee.txt", ios::in | ios::binary );
f.read((char*)&e, sizeof(e));
while(f)
{
if(e.reteno()==en)
{
flag=1;
e.putdata();
}
f.read((char*)&e, sizeof(e));
}
if(flag==0)
{
cout<<"Record Not Found\n";
}
f.close();
}
【问题讨论】:
-
您应该始终检查函数是否成功,即
if (f.is_open()) ... -
根据您的代码,您在尝试追加时使用
ios::out,在尝试搜索员工时使用ios::app。你确定你没看错?此外,您的代码示例不是最小的。你能隔离导致问题的部分吗(也许是一个新的 main 函数,只有几行用于打开和尝试附加一些东西)? -
稍微修改了我的代码,请再查看一下。
-
代码还是太多了。请提供一个最小的例子。
-
使代码更小。我认为答案解决了这个问题。
标签: c++ gcc file-io file-handling