scanf / getchar funcionando corretamente apenas pela primeira vez através do loop?

Estou tentando fazer com que o usuário insira um número quantas vezes quiser (e crie um nó de lista vinculada para cada um dos números).

No entanto, eu tentei vários método de limpar o buffer de entrada de caracteres, mas sem sucesso. Estranhamente, o código será executado uma vez, mas não será executado corretamente no segundo.

Por exemplo, com o código abaixo, o terminal lê:

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

E antes quando eu estava usandoscanf("%c", yesno); Eu nem seria capaz de inserir 'y' na última linha. Acabou de terminar.

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
    }

Eu li em entradas de caracteres e buffers, e supostamente o método getchar () deve funcionar. Estou usando errado? Eu também tentei scanf () com espaços extras antes e depois do "% c", mas sem sucesso.

questionAnswers(3)

yourAnswerToTheQuestion