Я просматривал язык программирования C от K&R и наткнулся на этот фрагмент кода:
main()
{
int c;
while ((c=getchar()) != EOF)
putchar(c);
}
Я понимаю, что приведенный выше код не печатает по одному символу за раз сразу после того, как getchar()
получает ввод символа из stdin
, потому что stdin
только отправляет ввод в буфер ввода программы после пользователя попадает Enter
.
Однако функция getchar()
по-прежнему считывает по одному символу из входного буфера и передает указанный символ putchar()
для печати. Почему putchar()
не печатает символ сразу после его получения? Он также ждет символа newline
перед печатью и сохраняет все в своем собственном буфере?
getchar
не возвращает никаких символов, пока вы не нажмете ввод. Еслиgetchar
все еще ждет, пока вы нажмете Enter, то, очевидно, ваша программа еще не вызывалаputchar
. - person user253751   schedule 09.02.2016