scanf / getchar работает правильно только первый раз через цикл?

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

Однако я'Мы пробовали несколько методов очистки буфера ввода символов, но безрезультатно. Как ни странно, код будет выполняться один раз, но второй будет выполняться некорректно.

Например, с кодом ниже, терминал читает:

would you like to enter an integer?
y
Enter an integer: 4
would you like to enter an integer?
y
**program terminates**

И до того, когда я использовалscanf("%c", yesno); Я бы даже не смог ввести "у" на последней строке. Это просто прекратилось.

struct node *read_numbers(void){
    struct node *first = NULL;
    int n; char yesno;
    yesno = 'y';
    while( yesno == 'y'){
        printf("Would you like enter an integer ((y) for yes/(n) for no):\n");
        yesno = getchar();  
        while(getchar() != '\n');
        if(yesno == 'y'){
            printf("Enter an Integer:");
            scanf(" %d", &n);
            first = add_to_list(first, n);
            } else {
                return first;
                }
        } // end while
    }

Я прочитал о символьных входах и буферах, и предположительно должен работать метод getchar (). Я использую это неправильно? Я'мы также пробовали scanf () с дополнительными пробелами до и после "% С», но безрезультатно.

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

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