c++ 二进制文件读写问题,用write写入时没有问题,但是用read读出时程序出现异常,求解惑

//写入三个学生信息#include<iostream>#include<fstream>usingnamespacestd;structstudent{charname... //写入三个学生信息
#include<iostream>
#include<fstream>
using namespace std;
struct student
{
char name[20];
int num;
int age;
char sex;
};
int main()
{
student stud[3]={"Li",1001,18,'f',"Fun",1002,19,'m',"Wang",1004,17,'f'};
ofstream outfile("stud.dat",ios::binary);
if(!outfile)
{
cerr<<"open error!"<<endl;
abort();
}
for(int i=0;i<3;i++)
outfile.write((char *)&stud[i],sizeof(stud[i]));
outfile.close();
return 0;
}

运行下面的程序时就出现异常了
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct student
{
string name;
int num;
int age;
char sex;
};
int main()
{
student stud[3];
int i;
ifstream infile("stud.dat",ios::binary);
if(!infile)
{
cerr<<"open error!"<<endl;
abort();
}
for(i=0;i<3;i++)
infile.read((char*)&stud[i],sizeof(stud[i]));
infile.close();
for(i=0;i<3;i++)
{
cout<<"NO."<<i+1<<endl;
cout<<"name:"<<stud[i].name<<endl;
cout<<"num:"<<stud[i].num<<endl;
cout<<"age:"<<stud[i].age<<endl;
cout<<"sex:"<<stud[i].sex<<endl;
}
return 0;
}
展开
 我来答
snoopylie
2012-05-30 · TA获得超过1275个赞
知道小有建树答主
回答量:2396
采纳率:33%
帮助的人:823万
展开全部
欢迎采纳
写的时候
struct student
{
char name[20];
int num;
int age;
char sex;
};

读的时候
struct student
{
string name;
int num;
int age;
char sex;
};
当然不对了
都改成
struct student
{
char name[20];
int num;
int age;
char sex;
}; 就正确了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式