.exe 中的 0x5da7edfc (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突

xllrz2010 2012-02-06 07:24:51
红色部分在调试过程中到最后一个人信息显示之后就出现错误,求教是什么原因?
TXT信息
00000001 苏三 123457 计科1班
00000002 李四 123453 计科1班
00000003 王五 123452 计科2班
00000004 张四 111123 网工4班
00000005 张三 234211 计软3班


#include<iostream>
#include<string>
#include<fstream>
using namespace std;
struct Information
{
string id; //学生学号
string stuName;//学生名字
string key;//学生密码
string ban;//学生班级
};
class Student
{
public:
Information students;
Student(){}
~Student(){}
int CountLines(char*filename);
void Show(int); //从txt读取学生信息
};

int Student::CountLines(char*filename)
{
ifstream ReadFile;
int n=0;
string temp;
ReadFile.open(filename,ios::in);
if(ReadFile.fail())
{
return 0;
}
else
{
while(getline(ReadFile,temp))
{
n++;
}
return n;
}
ReadFile.close();
}
void main()
{
Student mm;
string num;
string name;
string code;
string Ban;
int LINES;
ifstream f("Student.txt",ios::in);
if(!f)
{
cerr<<"没有学生记录可供查询!"<<endl;
abort();
}
else
{
LINES=mm.CountLines("Student.txt");
Information *students=new Information[LINES-1];
int i=0;
while(!f.eof())
{
f>>num>>name>>code>>Ban;
students[i].id=num;
students[i].stuName=name;
students[i].key=code;
students[i].ban=Ban;
i++;
}

f.close();
}
}
...全文
641 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
duke56 2012-02-06
  • 打赏
  • 举报
回复
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

struct Information
{
string id; //学生学号
string stuName;//学生名字
string key;//学生密码
string ban;//学生班级
};
class Student
{
public:
Information students;
Student(){}
~Student(){}
int CountLines(char*filename);
void Show(int); //从txt读取学生信息
};

int Student::CountLines(char*filename)
{
ifstream ReadFile;
int n=0;
string temp;
ReadFile.open(filename,ios::in);
if(ReadFile.fail())
{
return 0;
}
else
{
while(getline(ReadFile,temp))
{
n++;
}
return n;
}
ReadFile.close();
}

void main()
{
Student mm;
string num;
string name;
string code;
string Ban;
int LINES;
ifstream f("Student.txt",ios::in);
if(!f)
{
cerr<<"没有学生记录可供查询!"<<endl;
abort();
}
else
{
LINES=mm.CountLines("Student.txt");
Information *students=new Information[LINES];//数组不够用,溢出
int i=0;
while(!f.eof())
{
f>>num>>name>>code>>Ban;
students[i].id=num;
students[i].stuName=name;
students[i].key=code;
students[i].ban=Ban;
cout<<students[i].id<<" "<<students[i].stuName<<" "<<students[i].key<<" "<<students[i].ban<<endl;
i++;
}
f.close();
}
}
羽飞 2012-02-06
  • 打赏
  • 举报
回复
楼主能确保文件中一行是一个信息,而且最后还带一个换行

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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