代码如下,在第一步getchar
里如果输入了 EOF(我用的 macOS,输入了 Ctrl+D),那么循环里 scanf 就一直读不到值陷入死循环,用 rewind 清理掉 EOF 之后就没问题了,为什么第一个循环清理不掉 EOF 呢?
#include <stdio.h>
int main(void)
{
int ch;
int num;
ch = getchar();
while ((ch = getchar()) != '\n' && ch != EOF)
;
// rewind(stdin);
while (scanf("%d", &num) != 1 || num < 1 || num > 5)
{
printf("%d\n", num);
}
printf("Number is %d\n", num);
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.