【发布时间】:2013-11-10 11:43:24
【问题描述】:
我遇到了这个问题。我正在使用 while 循环扫描数字字符串,需要结束扫描并开始执行我的程序的其余部分。我只是不知道如何刷新标准输入或做任何事情以不按两次 Ctrl+D。我只需要发送一次 EOF 来告诉我的循环结束。
while (! feof (stdin))
{status=scanf ("%d", &array[i]);
if ( (status != 1 && status != EOF) )
{ printf("\nWrong input.\n");
return 1;}
i++;}
【问题讨论】:
-
将
while (! feof (stdin))替换为while (1)。 (feof() 总是 错误...)另外:EOF 不是 字符;您不能像将字符发送到流或文件一样发送它。 -
如果
stdin是您的终端,则没有 EOF 条件。如果文件不是具有有限数据的真实文件,而是可以随时生成更多数据的键盘(真实或虚拟),则很难到达文件末尾。 -
我将它替换为
while(1)并添加了if (status==EOF) break;结果是我现在必须按三下Ctrl+D -
我这辈子从没见过这么奇怪的代码格式。你从哪里学来的?