问题
验证表达式
getchar() != EOF
是0
还是1
。
方法
我曾尝试编写一个程序,该程序首先接受EOF
以外的输入,因此将打印值1
。接下来,它将EOF
作为输入,并将打印0
。
/* Program to verify that the value of the expression getchar() != EOF is 0 or 1 */
#include <stdio.h>
int main()
{
printf("Inputting something other than EOF, value of the expression is %d\n", getchar() != EOF);
printf("Inputting EOF, value of the expression is %d\n", getchar() != EOF);
printf("It is verified that the expression getchar() != EOF is 0 or 1.\n");
return 0;
}`
问题:
但是当我提供输入时,它不会打印第一行并等待下一个输入。它直接打印所有行。如何让第二行接受下一个输入?
答案 0 :(得分:1)
这里的问题是由于getchar()
的工作原理。只有在按下 ENTER 键后它才会开始读取,在这种情况下,下一个getchar()
(在第二个printf()
中)将读取换行符 (\n
)来自输入缓冲区,不会等待任何用户输入。
解决方案:在第二个getchar()
之前再添加一个printf()
来电。这将吃 \n
。