所以在我的程序中我有一个2d字符数组gameField
,其中存有各种字符来表示堡垒,播放器,空白区域和家庭基地。我试图将这个数组保存到一个文件中,但我试图做的方式似乎不起作用。这是我的示例代码。
void saveMap()
{
string userMap = directoryName + username + "-map.txt";
ofstream savemap(userMap.c_str());
for (int i = 0; i <= ROWS; i++)
{
for (int j = 0;j <= COLUMNS; j++)
{
savemap << gameField[i][j];
}
savemap << endl;
}
savemap.close();
}
每当我尝试执行此操作时,我都会遇到运行时错误,我想知道是否有人可以解释原因并提供替代方案。
编辑: gameField是一个字符数组,COLUMNS
等于50,ROWS等于30.我将数组中的每个字符初始化并设置为等于某事,但是每当我调用该函数时,我在Game1.exe中的0x511cbe20(msvcr100d.dll)处得到一个未处理的异常:0xC0000005:访问冲突读取位置0x30303030。
答案 0 :(得分:2)
您正尝试访问阵列之外的内存。例如,行的有效范围是[0,ROWS - 1]
我会按照以下方式编写函数
void saveMap()
{
string userMap= directoryName+username+"-map.txt";
ofstream savemap(userMap.c_str());
int i = 0;
while ( i < ROWS && savemap.write( gameField[i++], COLLUMS ) ) savemap << std::endl;
}