0xC0000005: 写入位置 0xabababab 时发生访问冲突
场景:.exe 中的 0x5da7edfc (msvcr90d.dll) 处未处理的错误: 0xC0000005: 写入位置 0xabababab 时发生访问冲突
.exe 中的 0x5da7edfc (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突
红色部分在调试过程中到最后一个人信息显示之后就出现错误,求教是什么原因?
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();
}
}
------解决方案--------------------
楼主能确保文件中一行是一个信息,而且最后还带一个换行吗
------解决方案--------------------
.exe 中的 0x5da7edfc (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突
红色部分在调试过程中到最后一个人信息显示之后就出现错误,求教是什么原因?
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();
}
}
------解决方案--------------------
楼主能确保文件中一行是一个信息,而且最后还带一个换行吗
------解决方案--------------------
- C/C++ code
#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(); } }