Si vous voulez simplement lire un seul caractère à partir de stdin, alors getchar()
est le choix approprié. Si vous avez des exigences plus compliquées, alors getchar()
ne suffira pas.
getc()
vous permet de lire à partir d'un autre flux (par exemple, on a ouvert avec fopen()
);
scanf()
vous permet de lire plus d'un seul caractère à la fois.
L'erreur la plus courante lors de l'utilisation getchar()
est d'essayer d'utiliser une variable char
pour stocker le résultat. Vous devez utiliser une variable int
, car la plage de valeurs getchar()
renvoie "une valeur comprise entre unsigned char
et la valeur négative unique EOF
". Une variable char
n'a pas une plage suffisante pour cela, ce qui peut signifier que vous pouvez confondre un retour de caractère entièrement valide avec EOF
. La même chose s'applique à getc()
.
Merci pour la réponse. Dans scanf si je ne donne que% c, alors je devrais être capable de lire seulement un caractère à droite? – Jay
Oui, mais c'est exagéré dans ce but. – caf
Sérieusement exagéré. Sur de nombreuses plateformes, getchar() est une macro qui retourne rapidement un caractère (avec un flux tamponné), ou utilise fread() pour obtenir un caractère. Avec scanf(), il y a beaucoup de travail inutile. – tomlogic