Previous Next Up Index Contents

11.5.3. Détection de la fin d'un fichier séquentiel

Lors de la fermeture d'un fichier ouvert en écriture, la fin du fichier est marquée automatiquement par le symbole de fin de fichier EOF (End Of File). Lors de la lecture d'un fichier, les fonctions finfichier(<Nom>) respectivement feof(<FP>) nous permettent de détecter la fin du fichier:

Détection de la fin d'un fichier en langage algorithmique

     finfichier( <Nom> )
finfichier retourne la valeur logique vrai, si la tête de lecture du fichier référencé par <Nom> est arrivée à la fin du fichier; sinon la valeur logique du résultat est faux.

<Nom> est une chaîne de caractères constante ou une variable de type chaîne qui représente le nom du fichier duquel on veut lire.

Détection de la fin d'un fichier en langage C - feof

     feof( <FP> );
feof retourne une valeur différente de zéro, si la tête de lecture du fichier référencé par <FP> est arrivée à la fin du fichier; sinon la valeur du résultat est zéro.

<FP> est un pointeur du type FILE* qui est relié au nom du fichier à lire.

Attention!

Pour que la fonction feof détecte correctement la fin du fichier, il faut qu'après la lecture de la dernière donnée du fichier, la tête de lecture arrive jusqu'à la position de la marque EOF. Nous obtenons cet effet seulement si nous terminons aussi la chaîne de format de fscanf par un retour à la ligne '\n' (ou par un autre signe d'espacement).

Exemple

Une boucle de lecture typique pour lire les enregistrements d'un fichier séquentiel référencé par un pointeur FP peut avoir la forme suivante:

  while (!feof(FP))
     {
      fscanf(FP, "%s\n ... \n", NOM, ... );
      . . .
     }

Exemple

Le programme suivant lit et affiche le fichier "C:\AUTOEXEC.BAT" en le parcourant caractère par caractère:

#include <stdio.h>
#include <stdlib.h>
main()
{
 FILE *FP;
 FP = fopen("C:\\AUTOEXEC.BAT", "r");
 if (!FP) 
    {
     printf("Impossible d'ouvrir le fichier\n");
     exit(-1);
    }
 while (!feof(FP))
     putchar(fgetc(FP));
 fclose(FP);
 return 0;
}

Dans une chaîne de caractères constante, il faut indiquer le symbole '\' (back-slash) par '\\', pour qu'il ne soit pas confondu avec le début d'une séquence d'échappement (p.ex: \n, \t, \a, ...).


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber