我正在尝试将文本文件读入2D数组(行/列)。当文件读取换行符时,我想用空格值(ASCII 32)填充数组行的其余部分。 似乎使用fgetc读取文件值的代码部分导致我的代码表现得很奇怪。
我将在下面发布我的代码:
val = 0; fill = 0;
while(val != EOF && i < WORLDHEIGHT)
{
if(val==10)
{
fill = 1;
}
if(fill==1)
{
world[i][j] = 32;
}
else
{
val=fgetc(fd);
world[i][j] = val;
}
j++;
if(j > WORLDWIDTH)
{
i++;
j=0;
fill = 0;
val = 0;
printf("reached WORLDWIDTH:i=%d j=%d val=%d fill=%d\n", i,j,val,fill);
}
}
程序似乎没有达到最后的if语句。如果我注释掉该行&#34; val = 0&#34;然后它确实达到了它,否则它不会。
任何人都能解释为什么会这样吗?谢谢。
答案 0 :(得分:1)
通常,
val = 0
while
循环由条件val != EOF
停止,
当它到达EOF(文件末尾)时,你将停止填充。
在没有val = 0
的情况下,while
循环因条件i < WORLDHEIGHT
而停止,
你将继续填充,直到整个阵列充满了32.
P.S。您也可以将printf
放在i++
前面进行记录。
if(j > WORLDWIDTH)
{
printf("reached WORLDWIDTH:i=%d j=%d val=%d fill=%d\n", i,j,val,fill);
i++;
j=0;
fill = 0;
val = 0;
//printf("reached WORLDWIDTH:i=%d j=%d val=%d fill=%d\n", i,j,val,fill);
}