谁能解释下这个问题?

yuyang850820 2010-05-24 10:20:12
建立一个Goods类的数组,在数组中输入成员变量,然后输出到文件中。在从文件中读入,然后现实。为什么会出现异常
Unhandled exception at 0x5a9bad54 (msvcp100d.dll) in IO.exe: 0xC0000005: Access violation writing location 0xfeeefeee.

另外问一下,像这样的错误如何调试。我现在碰到这样的问题就是一头雾水,不知道如何下手。

#include <iostream>
#include <fstream>
#include <string>
#define MAX 3
using namespace std;
class Goods
{
int Num;
string Name;
string Infor;
public:
void Init(string name, string infor,int num=0) //默认形参的构造函数
{
Num=num;
Name=name;
Infor=infor;
}
void print()
{
cout<<Num<<'\t'<<Name<<'\t'<<Infor<<endl;
}
};

void main()
{
Goods goods[MAX];
int num;
string name,infor,filename;
cout<<"请输入货物相关信息(编号、货物名、货物介绍):"<<endl;
for(int i=0;i<MAX;i++)
{
cin>>num>>name>>infor;
goods[i].Init(name,infor,num);
}
cout<<"建立文件的文件名:"<<endl;
cin>>filename;
ofstream file(filename,ios::out);
if(!file)
{
cerr<<"文件打开失败"<<endl;
return;
}
for(int i=0;i<MAX;i++)
file.write((char*)(goods+i),sizeof(Goods));
file.close();
ifstream file1(filename,ios::in);
if(!file1)
{
cerr<<"文件打开失败"<<endl;
return;
}
Goods temp[MAX];
file1.read((char*)temp,sizeof(temp));
for(int i=0;i<MAX;i++)
temp[i].print();
file1.close();
}
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyang850820 2010-05-24
  • 打赏
  • 举报
回复
上面几位所说的我试过了,还是和原来一样。
pengzhixi 2010-05-24
  • 打赏
  • 举报
回复
ofstream file(filename.c_str(),ios::out);
selooloo 2010-05-24
  • 打赏
  • 举报
回复
ifstream file1(filename,ios::in);
这个编译器不报错吗?
cattycat 2010-05-24
  • 打赏
  • 举报
回复
试试把你写入文件的循环直接写成整个数组输出到文件,其实没问题的
heartlesstoanyone 2010-05-24
  • 打赏
  • 举报
回复
在Linux下试,没有遇到楼主所说的问题。
[code=C/C++]
#include <iostream>
#include <fstream>
#include <string>
#define MAX 3
using namespace std;
class Goods
{
int Num;
string Name;
string Infor;
public:
void Init(string name, string infor,int num=0) //默认形参的构造函数
{
Num=num;
Name=name;
Infor=infor;
}
void print()
{
cout<<Num<<'\t'<<Name<<'\t'<<Infor<<endl;
}
};

int main()
{
Goods goods[MAX];
int num;
string name,infor,filename;
cout<<"请输入货物相关信息(编号、货物名、货物介绍):"<<endl;
for (int i=0;i<MAX;i++)
{
cin>>num>>name>>infor;
goods[i].Init(name,infor,num);
}
cout<<"建立文件的文件名:"<<endl;
cin>>filename;
ofstream file(filename.c_str(),ios::out);
if (!file)
{
cerr<<"文件打开失败"<<endl;
return -1;
}
for (int i=0;i<MAX;i++)
file.write((char*)(goods+i),sizeof(Goods));
file.close();
ifstream file1(filename.c_str(),ios::in);
if (!file1)
{
cerr<<"文件打开失败"<<endl;
return -1;
}
Goods temp[MAX];
file1.read((char*)temp,sizeof(temp));
for (int i=0;i<MAX;i++)
temp[i].print();
file1.close();

return 0 ;
}
[/code
$./test
请输入货物相关信息(编号、货物名、货物介绍):
1
aa
aaa
2
bb
bbb
3
cc
ccc
建立文件的文件名:
test.txt
1 aa aaa
2 bb bbb
3 cc ccc
$

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧