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.