C++ or MFC读取二进制文件的问题 30

先说在c++(控制台程序)中吧..在程序中我设置了输出和读入二进制文件的功能,在程序中(没有关闭程序的前提下),我都可以输出,和读入二进制文件的.(刚输出完,就可以读取.... 先说在c++(控制台程序)中吧..在程序中我设置了输出和读入二进制文件的功能,在程序中(没有关闭程序的前提下),我都可以输出,和读入二进制文件的.(刚输出完,就可以读取.)但是为什么我把程序关闭了,重新再开的时候,就不能读取了??(文件还在,没有重新输入就直接读取!)读取出来的数据都是溢出的?为什么呢?..
而MFC上的问题也是这样,输出了二进制文件以后,就总是读取不了...没有任何的数据.

ps.本来我是打算是在MFC读取后,把数据的某一项(例如名称)显示在列表框,然后其他数据出现在文本框的,但是读取以后什么数据都没有,但是列表框的确多了一项空白的一行...一按就马上出错了.(如图)..后来加了一个UpdateData(FALSE),发现数据都是溢出的~!为什么呢?

lib a;
ofstream ofile("data.dat",ios::binary);
ifstream ifile("data.dat",ios::binary);
int b;
cin>>b;
if(b==0)
{
cin>>a.a1>>a.a2>>a.a3;
ofile.write((char*)&a,sizeof(a));
cout<<a.a1<<" "<<a.a2<<" "<<a.a3<<endl;
ofile.close();
ifile.read((char*)&a,sizeof(a));
ofile.close();
cout<<a.a1<<" "<<a.a2<<" "<<a.a3<<endl;
}

else
{

ifile.read((char*)&a,sizeof(a));
cout<<a.a1<<" "<<a.a2<<" "<<a.a3<<endl;
ofile.close();
}

}
lib a;
ofstream ofile("data.dat",ios::binary);
ifstream ifile("data.dat",ios::binary);
int b;
cin>>b;
if(b==0)
{
cin>>a.a1>>a.a2>>a.a3;
ofile.write((char*)&a,sizeof(a));
cout<<a.a1<<" "<<a.a2<<" "<<a.a3<<endl;
ofile.close();
ifile.read((char*)&a,sizeof(a));
ofile.close();
cout<<a.a1<<" "<<a.a2<<" "<<a.a3<<endl;
}

else
{

ifile.read((char*)&a,sizeof(a));
cout<<a.a1<<" "<<a.a2<<" "<<a.a3<<endl;
ofile.close();
}

例如这样 .if else是选择输入还是读取..
MFC的读取的代码大致上差不多吧.都是这样的read 和write (用CFile的)
展开
 我来答
boblion
2008-08-22 · 超过18用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:60.9万
展开全部
看着头疼啊,我有个建议,就是把输入流和输出流的逻辑分开,你的ifstream和ofstream都放到了一起,有一点儿乱
再说,文件指针谁知道你都弄到哪里去了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式