La variable en second paramètre reçoit l’enregistrement, la ligne lue. Dans l’exemple suivant, un enregistrement du 
fichier  des  mots  de  passe  de  l’exemple  ci­dessus  est  lu,  partant  du  principe  que  la  largeur  est  fixe,  puis 
l’enregistrement est découpé pour récupérer le login et l’uid, converti en entier. 
Programme OUVRE 
Var 
fic :fichier séquentiel 
nom :chaîne 
ligne,login :chaîne 
uid :entier 
Début 
nom←"passwd" 
Ouvrir nom dans fic en lecture 
/* traitements */ 
Lire(fic,ligne) 
login←trim(milieu(ligne,1,8)) 
uid←chnum(milieu(ligne,10,5)) 
Afficher login,uid 
Fermer fic 
Fin
Que faire cependant quand on ne connaît pas à l’avance le nombre de lignes du fichier ? Comment savoir si la fin du 
fichier a été atteinte ? 
Vous avez deux possibilités : 
q Selon certains formalismes algorithmiques, Lire est une fonction qui retourne un booléen, donc vrai ou faux. 
Si vous tentez de lire un enregistrement et qu’il n’y en a plus, Lire retourne FAUX. Autrement dit, tant que Lire 
est VRAI, on peut continuer à lire les lignes suivantes. 
q La fonction EOF() parfois appelée aussi FinFichier() retourne un booléen qui indique si la fin du fichier a été 
atteinte ou non. Cette fonction prend en paramètre le nom logique du fichier. Elle retourne VRAI si la fin du 
fichier a été atteinte, donc s’il ne reste plus d’enregistrements à lire. 
  La  fonction  algorithmique  EOF()  va  retourner  VRAI  si  le  fichier  que  vous  ouvrez  ne  contient  pas 
d’enregistrements,  donc  si  la  fin  de  fichier  est  atteinte  dès  l’ouverture.  Or  dans  quelques  langages,  le 
programme  ne  le  sait  pas  tant  qu’il  n’a  pas  tenté  de  lire  un  enregistrement,  et  donc  une  fonction  de  ce  type 
retournerait FAUX tant qu’aucune lecture n’aurait eu lieu. Prudence… 
Le programme suivant va lire tout le fichier des mots de passe et placer les logins et UID dans des tableaux. Comme 
on ne connaît pas à l’avance le nombre d’éléments, on se limitera arbitrairement à 100 lignes. 
Programme LIREFIC 
Var 
fic :fichier séquentiel 
nom :chaîne 
ligne:chaîne 
i:entier 
login :tableau[1..100] de chaînes 
uid :tableau[1..100] d’entiers 
Début 
nom←"passwd" 
i←0 
Ouvrir nom dans fic en lecture 
Tant que NON EOF(fic) Faire 
Lire(fic,ligne) 
i←i+1 
login[i] ←trim(milieu(ligne,1,8)) 
uid[i] ←chnum(milieu(ligne,10,5)) 
FinTantQue 
Afficher i," enregistrements lus" 
Fermer fic 
Fin
b. Écriture 
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
156
Précédent

- 156/220

Suivant