UNGETC |
Relecture d'un caractère |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int ungetc(int c,FILE *stream) |
Paramètres
Nom | Description |
---|---|
c | Ce paramètre permet d'indiquer le caractère à écrire |
stream | Ce paramètre permet d'indiquer l'identificateur de fichier |
Description
Cette fonction effectue la réécriture d'un caractère dans un fichier ayant été lu.
Remarques
- La fonction ungetc() renvoie le caractère spécifié par l'octet de poids faible de c au flux de données du flux de données d'entrée. Ce caractère sera alors obtenu par la prochaine opération de lecture en continu. Un appel à aux fonctions fflush() ou fseek() annule une opération ungetc() et supprime le caractère.
- Un pushback à un caractère est garanti; cependant, certaines mise en oeuvres en accepteront davantage.
- Vous ne pouvez pas annuler un EOF.
- Un appel à ungetc() efface l'indicateur de fin de fichier associé au flux de données spécifié.
- La valeur de l'indicateur de position de fichier pour un flux de texte n'est pas définie jusqu'à ce que tous les caractères repoussés soient lus, auquel cas ce sera le même qu'avant le premier appel à ungetc(). Pour les flux de données binaires, chaque appel ungetc() décrémente l'indicateur de position du fichier.
- La valeur de retour est égale à c en cas de succès et EOF en cas d'échec.
- Paramètres et retour : Le premier paramètre c est un entier représentant le caractère à remettre dans le flux, et stream est un pointeur vers le flux de fichiers où le caractère doit être remis. La fonction renvoie le caractère remis (c) en cas de succès, ou EOF en cas d'erreur. Cela permet aux développeurs de vérifier si l'opération a réussi ou non.
- Utilisation typique : ungetc est souvent utilisée dans des scénarios où le programme a besoin de revenir en arrière dans le flux de données après avoir lu un caractère. Cela peut être particulièrement utile dans les analyseurs de syntaxe ou les lecteurs de fichiers où le flux d'entrée est traité caractère par caractère. Par exemple, si un programme lit un caractère et détermine qu'il doit le relire en raison d'une logique de traitement, il peut utiliser ungetc pour placer ce caractère de nouveau dans le flux.
- Caractéristiques du caractère remis : Un flux ne peut contenir qu'un seul caractère remis à la fois. Si ungetc est appelé plusieurs fois sans avoir lu le caractère remis, seul le dernier caractère sera effectivement remis dans le flux. Cette limitation implique que l'utilisation de ungetc doit être soigneusement gérée pour éviter des résultats inattendus lors de la lecture des caractères.
- Compatibilité avec les flux d'entrée : La fonction ungetc fonctionne uniquement avec les flux d'entrée (comme les fichiers et l'entrée standard). Elle ne peut pas être utilisée avec des flux de sortie. Cela limite son utilisation à des cas spécifiques de traitement d'entrée, mais en fait un outil puissant pour la manipulation des données entrantes.
- Impact sur le flux de données : L'utilisation de ungetc peut affecter la manière dont les données sont traitées dans un programme, car le caractère remis sera lu lors de la prochaine opération de lecture. Cela peut entraîner des boucles infinies ou des comportements inattendus si la logique de traitement ne tient pas compte de la remise des caractères.
- Gestion des erreurs : Il est important de gérer les erreurs lors de l'utilisation de ungetc, notamment en vérifiant la valeur de retour pour s'assurer que le caractère a été remis avec succès. Les développeurs doivent également être conscients que si ungetc échoue, cela peut indiquer un problème avec le flux, ce qui pourrait nécessiter des mesures correctives dans le code.
Exemple
Cet exemple lit un caractère d'un fichier, l'affiche, puis le remet dans le flux :
Voir également
Langage de programmation - C++ - Référence procédures et fonctions - fgetc
Langage de programmation - C++ - Référence procédures et fonctions - getc
Langage de programmation - C++ - Référence procédures et fonctions - getchar
Langage de programmation - C - Référence procédures et fonctions - ungetc
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 735.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 286.
Dernière mise à jour : Lundi, le 3 août 2015