Что такое стандартный входной буфер?

#include  int main(void) { int c; c = getchar(); putchar(c); c = getchar(); putchar(c); c = getchar(); putchar(c); return 0; } 

Я хочу понять, почему функция, которая трижды работает с строкой, которая была введена только один раз. Какой-то парень объяснил, что мы работаем со стандартным буфером ввода в этой ситуации, и это часть памяти. Я хочу кое-что прочитать. Можете ли вы посоветовать мне некоторые ресурсы?

Это функция вашего терминала (окно командной строки).

По умолчанию терминал будет собирать данные от пользователя до тех пор, пока он не нажмет Enter / Return. Затем вся строка выводится на входной stream вашей программы ( stdin , то есть, поскольку вы используете а не , нет никакого cin ).

Это полезно, потому что вашей программе не приходится иметь дело с интерпретацией всех событий клавиатуры (например, удаление букв при нажатии Backspace). Программы, которые хотят обрабатывать клавиатуру, могут отключить этот режим ввода по умолчанию. Я думаю, что соответствующие ключевые слова Google для этого – terminfo или termcap .

В частности, в отношении вашего вопроса одна строка ввода хороша для трех вызовов getchar() если она содержит три символа. Если вы ввели только один символ, ваша программа должна ждать последующих вызовов getchar() для большего ввода.