Вопрос по putchar, c, getchar, stdin – Что такое стандартный входной буфер?

3
#include 

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

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

Это кажется C, а не C ++, и, как таковой, это нене имеет ничего общего с потоком CIN. user529758

Ваш Ответ

1   ответ
3

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

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

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

Большое спасибо вам! YaR_

Похожие вопросы