while(0==0)
{
ch = getc(f);
while(ch != '\n')
{
i++;
ch = getc(f);
printf("hi ");
}
if(ch == EOF)
break;
}
此循环运行无限次打印hi。该文件如下所示: -
1 3 8 2 4
2 3 3
3
答案 0 :(得分:1)
您可以将输入视为:
while((ch = getc(f)) != EOF)
或
while(scanf(" %c ",&c) != EOF)
而非无限while(0==0)
并删除break
条件。
答案 1 :(得分:0)
你确定文件末尾有EOL('\ n')吗?否则你的while(ch!='\ n')没有理由在读完最后一行后停止。
答案 2 :(得分:0)
0总是等于0.这是你无限的韵母。请改用:
{while(scanf(" %c ",&c) != EOF)"}
答案 3 :(得分:0)
while(0==0)
这是一个非常奇怪的符号,请执行此操作:
while(1)
要找出你的循环永不停止的原因(你是正确的),让我们观察可能的情况
您的getc(f)
会检索不是/n
而非EOF
的所有字符。继续进行第二个while
循环。
您的getc(f)
检索/n
。重新启动第一个while
循环。 (因为ch
不是EOF
)
您的getc(f)
检索EOF
。继续进行第二个while
循环。
在第二个while循环中:
getc(f)
检索/n
。重新启动第一个while循环(ch
不是EOF
)
getc(f)
检索除/n
和EOF
之外的任何字符。重新启动第二个while
循环。
getc(f)
检索EOF
。重新启动第二个while
循环。
您可以看到,在无可能的情况下,外部while
循环可能会中断。