¿Scanf / getchar funciona correctamente solo la primera vez a través del bucle?

Estoy intentando que el usuario ingrese un número tantas veces como quiera (y cree un nodo de lista enlazada para cada uno de los números).

Sin embargo, he intentado varios métodos para borrar el búfer de entrada de caracteres, pero sin éxito. Extrañamente, el código se ejecutará una vez, pero no se ejecutará correctamente el segundo.

Por ejemplo, con el siguiente código, el terminal lee:

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

Y antes cuando estaba usandoscanf("%c", yesno); Ni siquiera podría ingresar 'y' en la última línea. Acaba 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
    }

Leí sobre entradas de caracteres y buffers, y supuestamente el método getchar () debería funcionar. ¿Lo estoy utilizando mal? También probé scanf () con espacios adicionales antes y después del "% c", pero fue en vano.

Respuestas a la pregunta(3)

Su respuesta a la pregunta