我有这段代码从文件中读取一些参数:
int readInput()
{
cfFile = fopen(CONFIGFILE,"r");
inFile = fopen(INPUTFILE,"r");
fscanf(cfFile,"%d",&player);
fscanf(inFile,"%d%d%d%d",&remaining[0],&remaining[1],&lastRow,&lastCol);
char line[boardWidth+1];
for (int i=0;i<boardHeight;++i)
{
//int l = i;
fscanf(inFile,"%s",line);
for (int j=0;j<boardWidth;++j)
{
int val = 0;
if (line[j] == 'r') val = 0;
if (line[j] == 'b') val = 1;
if (line[j] == '_') val = 2;
if (line[j] == 'x') val = 3;
M[i][j]=val;
}
}
fclose(cfFile);
fclose(inFile);
}
当我跑步时,它给了我内存错误。结果表明i
之后fscanf(inFile,"%s",line)
或2403
之后int l = i
的价值发生了变化。这很奇怪。如果我在上面添加了行int l
,它会毫无错误地运行,但将其更改为boardWidth + 2
并不起作用。我还尝试将行长度更改为{{1}},代码无限运行。
任何人都可以解释在这种情况下发生了什么?因为尽管添加了行的代码运行了,但我仍然害怕看不见的错误。
答案 0 :(得分:0)
行的定义是什么? (很可能)你读的字符多于变量大小。