Путаница в том, как внутренне работает цикл getchar ()

Я включил пример программы, используяgetchar() ниже, для справки (не то, чтобы кто-то, вероятно, нуждался в этом), и не стесняйтесь обращаться с проблемами с этим, если хотите. Но мой вопрос:

Что именно происходит, когда программа вызываетgetchar()?

Вот мое понимание (пожалуйста, уточните или исправьте меня):

Когда вызывается getchar, он проверяет буфер STDIN, чтобы увидеть, есть ли какие-либо входные данные.Если нет никакого ввода, getchar спит.После пробуждения getchar проверяет, есть ли какие-либо входные данные, и если нет, снова переводит их в режим сна.Шаги 2 и 3 повторяются до тех пор, пока не будет введен ввод.Как только есть ввод (который по соглашению включает в себя 'EOF' в конце), getchar возвращает первый символ этого ввода и делаетчто-то указать, что следующий вызов getchar должен вернуть вторую букву из того же буфера? Я не совсем уверен, что это такое.Когда не осталось больше символов, кроме EOF, getchar очищает буфер?

Термины, которые я использовал, вероятно, не совсем верны.

#include <stdio.h>

int getLine(char buffer[], int maxChars);

#define MAX_LINE_LENGTH 80

int main(void){

    char line[MAX_LINE_LENGTH];
    int errorCode;

    errorCode = getLine(line, sizeof(line));
    if(errorCode == 1)
        printf("Input exceeded maximum line length of %d characters.\n", MAX_LINE_LENGTH);
    printf("%s\n", line);

    return 0;

}

int getLine(char buffer[], int maxChars){
    int c, i = 0;
    while((c = getchar()) != EOF && c != '\n' && i < maxChars - 1)
        buffer[i++] = c;
    buffer[i++] = '\0';
    if(i == maxChars)
        return 1;
    else
        return 0;
}

Ответы на вопрос(1)

Ваш ответ на вопрос