读取文件时遇到fgetc问题

时间:2015-06-28 21:49:50

标签: c c99

我正在尝试将文本文件读入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;然后它确实达到了它,否则它不会。

任何人都能解释为什么会这样吗?谢谢。

1 个答案:

答案 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);
   }