所以我试图在棋盘游戏的文件中实现阅读。
现在,我知道错误与第一个if语句有关,但据我所知,“index”值应为2,因此完全跳过if语句。
下一个索引值是1,它应该会触及if语句,但是它会在检查索引值时出现错误和中断,有什么想法吗?
class boardSpace
{
public:
int index, cost, rent, color;
string street, streetType, jail;
};
void readFile(boardSpace marray[])
{
int i = 0;
ifstream inFile;
inFile.open("Monopoly.txt");
while (!inFile.eof())
{
inFile >> marray[i].index;
inFile >> marray[i].street;
if (marray[i].index == 1)
{
inFile >> marray[i].streetType;
inFile >> marray[i].cost;
inFile >> marray[i].rent;
inFile >> marray[i].color;
}
if (marray[i].index == 3)
{
inFile >> marray[i].streetType;
}
if (marray[i].index == 7)
{
inFile >> marray[i].street;
inFile >> marray[i].streetType;
inFile >> marray[i].jail;
}
if (marray[i].index == 8)
{
inFile >> marray[i].street;
}
i++;
if (inFile.eof())
{
break;
}
}
inFile.close();
}
但不断收到以下错误
Exception thrown at 0x003BADF8 in Monopoly AI.exe: 0xC0000005:
Access violation reading location 0x01142018.
答案 0 :(得分:1)
访问冲突表明您的代码正在尝试访问尚未分配的内存。例如,内存地址刚好超出marray[]
中的最后一个元素。
建议您修改代码以确保i
永远不会超过marray[]
的上限。如果marray[]
有十个元素,i
必须永远不会是10个或更多。
你可能不应该依赖文件足够短以至于它永远不会超过数组。