Я бег следующей программы из языка программирования C книги:GetChar() = EOF
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
Когда я запускаю эту программу, я получаю необъяснимое поведение. Если я вводим символы из командной строки в следующей последовательности: {'h', 'e', 'l', 'l', 'o', '\n', '^D'}
, тогда я получаю следующий ответ, напечатанный на экране: hello
, после ввода \n
, и программа завершает работу после ввода ^D
.
Однако, когда я меняю последовательность следующим образом: {'h', 'e', 'l', 'l', 'o', '^D'}
, тогда я получаю следующий отклик на экран: hello
, но программа не уходит. Разве он не должен уходить после ввода ^D
? Я должен ввести ^D
второй раз для выхода программы. ИЛИ программа заканчивается только после того, как я ввел ^D
после \n
. Я не понимаю, почему программа не выходит, когда я вхожу ^D
. Есть предположения?
Я бегу по системе UNIX.
Обратите внимание, что это свойство входного потока операционной системы, а не программы C. –
Спасибо, Мариан и Мэтт Макнабб. Я думал, что входной буфер очищается только путем ввода символа новой строки. Я также не знал о подобном поведении с^D. – Nishi