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

#include 

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

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

3
добавлено отредактировано
Просмотры: 1
Это похоже на C, а не на C ++, и как таковое, это не имеет ничего общего с потоком cin.
добавлено автор user529758, источник

1 ответы

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

By default, the terminal will collect input from the user until he presses Enter/Return. Then the whole line is pushed to the input filestream of your program (stdin, that is; since you use rather than , there's no cin involved).

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

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

3
добавлено
Огромное спасибо вам!
добавлено автор YaR_, источник