急急C++应用程序错误,不能为read

来源:百度知道 编辑:UC知道 时间:2024/05/12 01:23:21
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct admin
{
string num;
int m;
string name;
};admin a[4];
int main()
{
ifstream inFile;
inFile.open("D:\\security.txt",ios::in);
int j=1;
if(!inFile.is_open())
cout<<"Error open"<<endl;
else

while (inFile.eof()==false)
{
inFile>>a[j].num;
inFile>>a[j].m;
inFile>>a[j].name;
j++;
}
inFile.close();

cout<<"welcome to the cp1200 POS system"<<endl;
cout<<"Created by Tian yu"<<endl;
cout<<"Please enter your security code:";

string code;
int i;

cin>>code;

while (code.length()==4)
{
if(code.at(i)<'0'||

这种错误一般是由于程序中存在内存(或数组)访问越界,从你的程序中来看有两处值得怀疑的地方:

1、数组admin a[4];的定义只有4个元素大小,如果文件“D:\\security.txt”中的内容超过这个数,那么你后面的程序中循环从文件读取内容,并保存到a中时,如果j超过3就会出现数组访问越界的错误;

2、int i; 没有初始化就使用,存在隐患,变量在使用前一定要赋值(或初始化),否则会出现意想不到的错误。

这种情况中毒的可能性很少
我这说的都是解决方法加一点理论,如果你想学理论可以看一下长篇大论,
软件方面就是程序冲突,内存被分配为一个个地址,这个地址用到的时候软件冲突导致内存写不进,就会出

现这种情况。如果你最近装了什么新软件 谢了试试,还有可能是系统有问题了,
硬件方面那就是内存有问题了,这个地址在内存里是坏的不能存取,当你用到它的时候系统就报错了,
解决方法一般都是先软后硬,像上面说的谢新软件,不行的话重装系统,还不行检测内存,有错更换就行
如有引用请注明来自LEEDOVE

有朋友问为什么老是玩游戏的时候出现的多,因为平时的时候用不了那么多内存,也就是说你1G的内存有大

部分在平时是空闲的,物理地址坏的内存刚好又在空闲中所以平时很少报错,而游戏时占用的比较多的内存

,也用到了坏的地址所以有时一开就报错,呵呵

0,擦拭内存条,最好用橡皮,
1,杀毒,清木马,一般用360,不排除有毒,但可能性不大,
2,谢掉你所安装的软件,游戏再装一次试试,若是光盘则换张盘试试,软件, 重下一个试试
3,重装系统,
4,检测内存,再检测硬盘,如果有问题则更换,leedove

数组越界。。。执行单步跟踪。。注意数组a的各个值,改好了应该没问题的,不是什么硬件的问题

LS正解