验证表达式 getchar() != EOF 是 0 还是 1

Verify that the expression getchar() != EOF is 0 or 1

问题

Verify that the expression getchar() != EOF is 0 or 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;
}`

问题:

但是当我输入时它不打印第一行并等待下一个输入。它直接打印所有行。如何让第二行接受下一个输入?

这里的问题是由于getchar()的工作原理。它只会在按下 ENTER 键后开始读取,在这种情况下,下一个 getchar()(在第二个 printf() 中)将读取 newline(\n) 来自输入缓冲区,不会等待任何 user 输入。

解决方案:在第二个 printf() 之前再添加一个 getchar() 调用。这将吃掉 \n