Убедитесь, что выражение getchar() != EOF равно 0 или 1

Проблема

Убедитесь, что выражение 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;
}`

Проблема:

Но когда я даю ввод, он не печатает первую строку и ждет следующего ввода. Он напрямую печатает все строки. Как я могу заставить вторую строку принять следующий ввод?


person In78    schedule 22.05.2015    source источник


Ответы (1)


Проблема здесь связана с принципом работы getchar(). Он начнет чтение только после нажатия клавиши ENTER, и в этом случае следующий getchar() (во втором printf()) прочитает новую строку(\n) из входного буфера и не будет ждать ввода данных пользователем.

Решение: добавьте еще один вызов getchar() перед вторым вызовом printf(). Это съест \n.

person Sourav Ghosh    schedule 22.05.2015