FEOF |
Fin du fichier |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int feof(FILE *ptrfichier); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
Description
Cette fonction indique si la fin du fichier est atteinte.
Remarques
- La fonction feof() vérifie l'indicateur de position du fichier pour déterminer si la fin du fichier associé au flux de données a été atteinte. Une valeur différente de zéro est renvoyée si l'indicateur de position du fichier est en fin de fichier; sinon, zéro est retourné.
- Une fois la fin du fichier atteinte, les opérations de lecture suivantes renverront EOF jusqu'à ce que soit rewind() soit appelé, soit l'indicateur de position du fichier déplacé à l'aide de fseek().
- La fonction feof() est particulièrement utile lorsque vous travaillez avec des fichiers binaires car le marqueur de fin de fichier est également un entier binaire valide. Des appels explicites doivent être faits à feof() plutôt que de simplement tester la valeur de retour de getc(), par exemple, pour déterminer quand la fin d'un fichier binaire a été atteinte.
- Définition et utilité : La fonction feof en C++ permet de tester si la fin d'un fichier a été atteinte. Elle est utilisée pour vérifier si un flux de données a atteint la fin d'un fichier, ce qui est utile dans les boucles de lecture de fichiers pour éviter des lectures inutiles ou des erreurs de lecture. Elle est définie dans la bibliothèque <cstdio>.
- Retour de feof : La fonction feof renvoie 0 si la fin du fichier n'a pas encore été atteinte, et une valeur différente de zéro (généralement 1) si la fin du fichier a été atteinte. Il est important de noter que feof ne signale la fin du fichier qu'après qu'une tentative de lecture ait échoué en raison de l'atteinte de la fin du fichier.
- Utilisation dans les boucles de lecture : L'utilisation de feof est courante dans les boucles de lecture de fichiers. Par exemple, dans une boucle while, on peut tester si la fin du fichier a été atteinte pour arrêter la lecture :
- Cependant, il est souvent recommandé de tester le résultat de la fonction de lecture elle-même (par exemple fscanf, fgets, ou fread) plutôt que de tester feof à chaque itération, car feof ne devient vrai qu'après un échec de lecture.
- Problèmes courants avec feof : Un problème fréquent avec feof est qu'il retourne true (non-zéro) même si une erreur de lecture se produit avant d'atteindre la fin du fichier. Cela peut mener à une confusion entre une fin de fichier réelle et une erreur de lecture. Il est donc important de vérifier également l'état du flux de fichiers après chaque opération de lecture, en utilisant par exemple ferror pour distinguer les erreurs de lecture des fins de fichier.
- Fin de fichier et lecture partielle : Si un fichier est lu partiellement à la fin, feof renverra une valeur non nulle uniquement après qu'une tentative de lecture échoue. Par exemple, si vous lisez un fichier contenant 100 octets, mais que vous n'avez que 90 octets à lire avant la fin, vous devez vérifier les résultats des fonctions de lecture pour vous assurer que vous n'avez pas rencontré une erreur avant d'atteindre la fin.
- Manipulation des flux de fichiers avec feof : feof peut être utilisé pour améliorer la gestion des fichiers dans les programmes traitant des entrées/sorties séquentielles. Cependant, il est essentiel de ne pas s'appuyer uniquement sur cette fonction pour contrôler la lecture. Pour des lectures fiables, il est conseillé d'utiliser un autre mécanisme de contrôle, tel que la fonction de lecture elle-même ou des boucles conditionnelles adaptées.
- Limites et alternatives : En C++, il existe d'autres mécanismes pour gérer la lecture des fichiers de manière plus sûre et plus intuitive, comme l'utilisation de flux std::ifstream (en C++ standard), qui gère plus efficacement la fin de fichier avec des fonctions comme eof() et en intégrant des exceptions. Bien que feof fonctionne bien en C, il est souvent préférable de privilégier les fonctionnalités spécifiques du C++ moderne pour une gestion des fichiers plus robuste.
Exemple
Prenons pour acquis que le fichier «readtext.txt» est le contenu :
UnDeux
Trois
Quatre
Cinq
Six
Sept
Huit
Neuf
Dix
Onze
Douze
Treize
Quatorze
Quinze
Seize
Voici un exemple montrant une utilisation plus classique de cette fonction :

on obtiendra le résultat suivant :
1:Un2:Deux
3:Trois
4:Quatre
5:Cinq
6:Six
7:Sept
8:Huit
9:Neuf
10:Dix
11:Onze
12:Douze
13:Treize
14:Quatorze
15:Quinze
16:Seize
Voir également
Langage de programmation - C++ - Référence procédures et fonctions - clearerr
Langage de programmation - C++ - Référence procédures et fonctions - ferror
Langage de programmation - C++ - Référence procédures et fonctions - fopen
Langage de programmation - C++ - Référence procédures et fonctions - fseek
Langage de programmation - C++ - Référence procédures et fonctions - getc
Langage de programmation - C++ - Référence procédures et fonctions - perror
Langage de programmation - C++ - Référence procédures et fonctions - putc
Langage de programmation - C++ - Référence procédures et fonctions - rewind
Langage de programmation - C - Référence procédures et fonctions - feof
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 96.