128 votes

Comment faire un scanf pour un seul caractère en C ?

En C : J'essaie d'obtenir le caractère de l'utilisateur avec scanf et quand je l'exécute, le programme n'attend pas que l'utilisateur tape quoi que ce soit...

Voici le code :

char ch;
printf("Enter one char");
scanf("%c", &ch);
printf("%c\n",ch);

Pourquoi ne fonctionne-t-il pas ?

1voto

Essayez d'utiliser getchar() ; à la place

la syntaxe :

void main() {
    char ch;
    ch = getchar();
}

-1voto

Avant que le scanf ne mette fflush(stdin); pour vider le tampon.

-1voto

edmanicom Points 21

Le seul code qui a fonctionné pour moi est :

scanf(" %c",&c);

J'avais le même problème, et seulement avec des caractères uniques. Après une heure de tests aléatoires, je ne peux pas encore signaler de problème. On aurait pu penser que le langage C disposerait désormais d'une fonction à toute épreuve pour récupérer les caractères uniques du clavier, et non d'une panoplie de solutions de contournement... Je dis ça comme ça...

-2voto

POTATO Points 1

Utilisez une chaîne de caractères au lieu de char comme

char c[10];
scanf ("%s", c);

Je crois que ça marche bien.

-3voto

Shahid Nawaz Points 23

Fournit un espace avant le spécificateur de conversion %c afin que le compilateur ignore les espaces blancs. Le programme peut être écrit comme suit :

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char ch;
    printf("Enter one char");
    scanf(" %c", &ch); /*Space is given before %c*/
    printf("%c\n",ch);
return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X