GETCHAR |
Demande un caractère |
---|---|
Langage C | stdio.h |
Syntaxe
int getchar(void); |
Description
Cette fonction effectue la lecture d'un caractère à partir de la console standard.
Algorithme
MODULE GETC(stream) SI stream is NULL ALORS RETOURNE EOF * Flux invalide FIN SI SI stream.end_of_file est vrai ALORS RETOURNE EOF * Fin du fichier déjà atteinte FIN SI SI stream.has_error est vrai ALORS RETOURNE EOF * Flux en état d'erreur FIN SI * Lire un caractère depuis le flux char ← read_next_character_from_stream(stream) SI char = END_OF_FILE ALORS stream.end_of_file ← true RETOURNE EOF * Retourne EOF si fin du fichier atteinte FIN SI * Met à jour le pointeur du flux stream.update_cursor_position() * Retourne le caractère lu RETOURNE char MODULE GETCHAR() * Appelle la fonction getc avec le flux stdin RETOURNE GETC(stdin) |
Remarques
- Lecture d'un caractère : La fonction getchar() lit un seul caractère depuis l'entrée standard (généralement le clavier). Elle renvoie ce caractère sous forme de valeur entière (type int), ce qui permet de détecter des caractères spéciaux comme EOF.
- Blocage jusqu'à l'entrée utilisateur : Lorsque getchar() est appelée, elle met le programme en pause jusqu'à ce qu'un caractère soit saisi par l'utilisateur et validé avec la touche ENTER. Cela en fait une fonction interactive, adaptée aux programmes nécessitant une interaction directe.
- Traitement des caractères supplémentaires : Si plusieurs caractères sont saisis avant de valider avec ENTER, getchar() lira le premier caractère de la file d'attente. Les caractères restants restent dans le tampon d'entrée et seront lus par les prochains appels à getchar().
- Retour spécial pour EOF : Si la fin de fichier (EOF) est atteinte ou qu'une erreur survient, getchar() retourne une valeur spéciale définie par la constante EOF (souvent -1). Cela permet de vérifier si l'entrée est terminée ou si une erreur s'est produite.
- Utilisation typique : getchar() est souvent utilisée dans des boucles pour lire et traiter des flux de caractères, par exemple dans des programmes
de traitement de texte ou d'analyse syntaxique. Exemple :
- Problèmes de tampon : Le comportement de getchar() est influencé par le tampon d'entrée standard. Les caractères ne sont transmis à getchar() qu'après une validation (comme ENTER) ou lorsque le tampon est rempli. Cela peut compliquer la lecture interactive en temps réel.
- Compatibilité avec les autres fonctions d'entrée : Si getchar() est utilisée avec d'autres fonctions d'entrée comme scanf(), le tampon d'entrée peut contenir des caractères résiduels, ce qui provoque des comportements inattendus. Il est souvent nécessaire de nettoyer le tampon en lisant jusqu'à un saut de ligne.
- Pas adaptée aux chaînes de caractères : Bien que pratique pour lire un seul caractère, getchar() n'est pas conçue pour traiter des chaînes de caractères ou des lignes complètes. Pour cela, il est préférable d'utiliser des fonctions comme fgets() ou scanf("%s", ...). Cependant, getchar() peut être utilisée pour valider ou ignorer des caractères spécifiques.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
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.