
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;
} 展开
#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;
} 展开
展开全部
欢迎采纳
写的时候
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;
}; 就正确了
写的时候
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;
}; 就正确了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询