web-dev-qa-db-fra.com

Lecture d'un seul caractère en C

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"?

10
g3d
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 
30
P.P.

Pour lire un seul caractère, utilisez plutôt getchar :

int c = getchar();
if (c != EOF)
  printf("%c\n", c);
6
Douglas

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);
2
Manolis Ragkousis