Programmer en langage C
184
© Éditions Eyrolles
2 Liste séquentielle d’un fichier
Voici maintenant un programme qui permet de lister le contenu d’un fichier quelconque tel
qu’il a pu être créé par le programme précédent.
Les déclarations sont identiques à celles du programme précédent. En revanche, on trouve
cette fois, dans l’ouverture du fichier, l’indication r (abréviation de read). Elle précise que le
fichier en question ne sera utilisé qu’en lecture. Il est donc nécessaire qu’il existe déjà (nous
verrons un peu plus loin comment traiter convenablement le cas où il n’existe pas).
La lecture dans le fichier se fait par un appel de la fonction fread :
fread (&n, sizeof(int), 1, entree)
dont les arguments sont comparables à ceux de fwrite. Mais, cette fois, la condition d’arrêt
de la boucle est :
feof (entree)
Celle-ci prend la valeur vrai (c’est-à-dire 1) lorsque la fin du fichier a été rencontrée. Notez
bien qu’il n’est pas suffisant d’avoir lu le dernier octet du fichier pour que cette condition
prenne la valeur vrai. Il est nécessaire d’avoir tenté de lire au-delà (contrairement à ce qui se
Liste séquentielle d’un fichier
#include
main()
{
char nomfich[21] ;
int n ;
FILE * entree ;
printf ("nom du fichier à lister : ") ;
scanf ("%20s", nomfich) ;
entree = fopen (nomfich, "r") ;
while ( fread (&n, sizeof(int), 1, entree), ! feof(entree) )
printf ("\n%d", n) ;
fclose (entree) ;
}
Delannoy Livre.book Page 184 Mercredi, 6. mai 2009 4:26 16
Précédent

- 197/281

Suivant