Я ввожу Ctrl - D (EOF) при вызове scanf(), затем следующий scanf игнорируется

Я ввожу Ctrl - D (EOF) при вызове scanf(), затем следующий scanf игнорируется.

#include <stdio.h>

int main()
{
   int input;
   scanf("%d", &input);//I press Ctrl-D when this line
   scanf("%d", &input);//this line just passed. not read my input. why?
   return 0;

}

Я хочу получить ввод со вторым вызовом scanf(). В чем проблема?


person 임근영    schedule 25.05.2017    source источник
comment
Что, как вы ожидали, произойдет - он попытается прочитать за пределами EOF?   -  person    schedule 25.05.2017
comment
@InternetAussie Я не хочу читать дальше EOF, я просто читаю стандартный ввод.   -  person 임근영    schedule 25.05.2017
comment
@임근영 EOF означает End Of Of File, т. е. конец входного потока, который означает, что больше нет данных для читать из stdin.   -  person Spikatrix    schedule 25.05.2017
comment
Я не хочу читать дальше EOF. Он не читает дальше EOF, так что здесь нет проблем.   -  person n. 1.8e9-where's-my-share m.    schedule 25.05.2017


Ответы (1)


кажется, что ваш код в порядке. Единственное, что нужно помнить, это не забывать нажимать «возврат» в конце ввода обоих чисел. Я переписываю ваш код «лучше»:

#include <stdio.h>
int main(){

int input1,input2;
printf("Digit the first number: ");
scanf("%i", &input1);//Press return at the end
printf("Digit the second number: ");
scanf("%i", &input2);//Press return at the end
printf("input1:%i\tinput2:%i\n",input1,input2);
return 0;
}
person ddannel    schedule 25.05.2017