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

时间:2015-05-22 14:19:57

标签: c eof getchar

问题

  

验证表达式getchar() != EOF0还是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;
}`

问题:

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

1 个答案:

答案 0 :(得分:1)

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

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