GETC |
Demande un caractère |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int getc(FILE *ptrfichier); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
Description
Cette fonction effectue la lecture d'un caractère dans un fichier.
Remarques
- La fonction getc() renvoie le caractère suivant du flux de données d'entrée et incrémente l'indicateur de position du fichier. Le caractère est lu comme un caractère non signé étant converti en entier.
- Si la fin du fichier est atteinte, getc() renvoie EOF. Cependant, comme EOF est une valeur entière valide, lorsque vous travaillez avec des fichiers binaires, vous devez utiliser feof() pour vérifier le caractère de fin de fichier. Si getc() 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.
- Les fonctions getc() et fgetc() sont identiques, et dans la plupart des mises en oeuvre, la fonction getc() est simplement défini comme une macro.
- #define getc(fp) fgetc(fp)
- Fonctionnalité et utilité : La fonction getc est utilisée pour lire un caractère à partir d'un flux de fichier ouvert. Elle est souvent employée pour des lectures caractère par caractère dans des fichiers texte. getc est similaire à fgetc, bien que certaines implémentations puissent l'optimiser sous forme de macro pour une exécution plus rapide.
- Retour et gestion des erreurs : getc retourne la valeur du caractère lu sous forme d'un int, ce qui permet de différencier un caractère valide de EOF. Il est important de vérifier explicitement la fin du fichier avec feof() ou la présence d'une erreur avec ferror() pour éviter toute confusion avec un caractère dont la valeur serait égale à EOF.
- Comparaison avec fgetc : getc et fgetc fonctionnent de manière similaire, mais getc peut être implémentée sous forme de macro, ce qui peut la rendre légèrement plus rapide. Cependant, cette optimisation peut poser des problèmes si getc est utilisée plusieurs fois dans une même expression, entraînant une évaluation multiple involontaire du paramètre.
- Utilisation avec des boucles : getc est souvent utilisée dans des boucles pour lire un fichier caractère par caractère. Un exemple typique serait :
- Efficacité et mémoire tampon : getc est plus efficace que fscanf ou fgets pour lire des fichiers texte lorsqu'on ne cherche à traiter qu'un caractère à la fois. Elle bénéficie généralement d'une mise en cache interne par la bibliothèque standard, ce qui minimise le nombre d'appels système pour la lecture d'un fichier.
- Problème de performance en lecture de gros fichiers : Bien que getc soit optimisée pour les lectures simples, son utilisation répétée dans une boucle peut devenir inefficace par rapport à des méthodes basées sur la lecture par blocs, comme fread, minimisant les accès disque en lisant plusieurs caractères à la fois.
- Lecture de données binaires : getc peut être utilisée pour lire des fichiers binaires, mais comme elle retourne un int et non un unsigned char, des erreurs peuvent survenir avec des données non textuelles. Dans ce cas, fread est généralement préférable pour garantir la lecture correcte des octets sans conversion implicite.
Ce programme lit un fichier et affiche son contenu caractère par caractère.
Exemple
Prenons pour acquis que le fichier «gladir.txt» est le contenu :
gladir.comVoici un exemple montrant une utilisation plus classique de cette fonction :

on obtiendra le résultat suivant :
gladir.comVoir é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 - getchar
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 - ungetc
Langage de programmation - C - Référence de procédures et fonctions - getc
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 122.