gpt4 book ai didi

c - 读取文件时遇到 fgetc 问题

转载 作者:行者123 更新时间:2023-11-30 20:25:02 25 4
gpt4 key购买 nike

我正在尝试将文本文件读入二维数组(行/列)。当文件读取换行符时,我想用空格值(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 语句。如果我注释掉“val = 0”行,那么它确实会到达它,否则它不会。

谁能解释一下这是为什么吗?谢谢。

最佳答案

一般来说,

  • val = 0while循环因条件 val != EOF 停止,
    当到达 EOF(文件末尾)时,您将停止填充。

  • 没有 val = 0while循环因条件 i < WORLDHEIGHT 停止,
    您将继续填充,直到整个数组填满 32。

附注您也可以把您的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);
}

关于c - 读取文件时遇到 fgetc 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31105121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com