J'essaye de lire un caractère de la console (à l'intérieur d'une boucle while). Mais il lit plus d'une fois.
Contribution:
a
Production:
char : a char : char : '
Code:
while(..)
{
char in;
scanf("%c",&in);
}
Comment puis-je lire uniquement "a"?
scanf("%c",&in);
laisse une nouvelle ligne qui est consommée lors de la prochaine itération.
Changez-le en:
scanf(" %c",&in); // Notice the whitespace in the format string
qui indique à scanf d'ignorer les espaces blancs.
OR
scanf(" %c",&in);
getchar(); // To consume the newline
Pour lire un seul caractère, utilisez plutôt getchar :
int c = getchar();
if (c != EOF)
printf("%c\n", c);
dans scanf("%c",&in);
vous pouvez ajouter après %c
un caractère de nouvelle ligne \n
afin d'absorber les caractères supplémentaires
scanf("%c\n",&in);