代码如下,在第一步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);
}
1
irytu 2021-04-22 00:01:47 +08:00 via iPhone
|