GETCHAR |
Demande un caractère |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int getchar(void) |
Description
Cette fonction effectue la lecture d'un caractère à partir de la console standard.
Remarques
- La fonction getchar() renvoie le caractère suivant à la stdin (entrée standard). Le caractère est lu comme un caractère non signé étant converti en entier.
- Si la fin du fichier est atteinte, la fonction getchar() renvoie EOF. Cependant, puisque EOF est une valeur entière valide, lorsque vous travaillez avec des fichiers binaires, vous devez utiliser feof() pour vérifier la fin du fichier. Si la fonction getchar() rencontre une erreur, EOF est également retourné. Si vous travaillez avec des fichiers binaires, vous devez utiliser ferror() pour vérifier les erreurs de fichier.
- La fonction getchar() est souvent mise en oeuvre sous forme de macro.
- Fonctionnalité et utilité : La fonction getchar permet de lire un caractère depuis l'entrée standard (stdin). Elle est souvent utilisée pour capturer une entrée utilisateur au clavier dans des programmes interactifs. Contrairement à cin en C++, elle fonctionne directement avec l'API de la bibliothèque standard du C et est plus bas niveau.
- Comparaison avec getc et fgetc : getchar est similaire à getc(stdin) car elle lit un caractère depuis l'entrée standard. La différence principale est que getc peut être utilisé avec n'importe quel flux (FILE*), tandis que getchar est spécifiquement conçu pour stdin. fgetc(stdin) est une alternative plus sûre, mais généralement getchar est plus concis et direct.
- Utilisation courante dans les boucles : getchar est souvent utilisée dans les boucles pour lire une série de caractères jusqu'à la fin de l'entrée. Par exemple :
- Problème du tampon et d'entrée bloquante : getchar est une fonction bloquante, ce qui signifie que le programme attendra indéfiniment une entrée de l'utilisateur avant de continuer. De plus, elle utilise un tampon d'entrée, ce qui signifie que l'entrée n'est transmise au programme qu'après avoir appuyé sur la touche Enter. Cela peut causer des problèmes si l'on veut lire les touches immédiatement après leur pression.
- Effet des retours à la ligne : Lorsqu'un utilisateur tape du texte et appuie sur Enter, getchar lit les caractères un par un, y compris le caractère de nouvelle ligne (\n). Il faut souvent gérer ce comportement pour éviter que des entrées inutiles perturbent le programme, par exemple en consommant les \n inutiles dans une boucle.
- Utilisation pour pause dans un Programme : getchar est parfois utilisé pour insérer une pause dans un programme, attendant que l'utilisateur appuie sur une touche avant de continuer. Exemple :
- Alternative avec getch et cin.get() : Dans un environnement Windows, getch() de <conio.h> est souvent préféré pour lire un caractère immédiatement sans attendre Enter. En C++, cin.get() offre une alternative plus moderne à getchar, bien que son utilisation dépende du contexte et des préférences du programmeur.
Ce programme lit l'entrée standard caractère par caractère et l'affiche immédiatement.
Cependant, cela souffre du problème du tampon, et un getchar supplémentaire peut être nécessaire pour consommer les entrées en attente.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

on obtiendra le résultat suivant :
Presse ENTER pour continuer...Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - fgetc
Langage de programmation - C++ - Référence de procédures et fonctions - freopen
Langage de programmation - C++ - Référence de procédures et fonctions - getc
Langage de programmation - C++ - Référence de procédures et fonctions - putc
Langage de programmation - C++ - Référence de procédures et fonctions - putchar
Langage de programmation - C++ - Référence de procédures et fonctions - scanf
Langage de programmation - C++ - Référence de procédures et fonctions - ungetc
Langage de programmation - C - Référence de procédures et fonctions - getchar
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 123.