Lire est une chose, écrire dans un fichier en est une autre. L’écriture utilise l’instruction Ecrire, une fonction qui prend 
comme  paramètre  le  nom  logique  du  fichier  et  l’enregistrement  (la  ligne)  à  écrire.  Vous  trouverez  tout  comme 
l’instruction de lecture, une instruction EcrireFichier strictement identique : 
Ecrire(nom_logique,enregistrement)
Comme vous devez écrire des enregistrements à largeur fixe, c’est à vous de vérifier que les enregistrements sont à 
la bonne longueur. S’ils sont trop longs, vous avez mal dimensionné vos enregistrements à l’origine (un cas régulier 
est une adresse à rallonge ou un nom de ville composé). S’ils sont trop courts, vous devrez leur rajouter des espaces 
en fin de chaîne. 
Par exemple, toujours dans l’exemple des logins, que faire si celui­ci est trop court, par exemple "toto", donc quatre 
caractères, alors qu’il devrait en faire huit ? L’astuce consiste à rallonger le login avec des espaces. Ce n’est pas un 
problème pour le relire, puisque la fonction trim() restaurera son état d’origine. Il est probable que votre langage de 
programmation  propose  une  fonction  qui  remplit  toute  seule  les  morceaux  manquants,  des  fois  il  s’agit  même  de 
l’instruction d’écriture (le fprintf du C le fait très bien). 
En  attendant,  vous  pouvez  programmer  vous­même  cette  fonction  algorithmique.  Elle  ressemble  fortement  à  la 
procédure  RepeteCar().  Appelez­la  Formate().  Elle  prendra  comme  paramètre  le  champ  de  l’enregistrement  et  la 
longueur attendue. Elle retournera ce même champ mais reformaté : soit coupé à la bonne longueur, soit avec des 
espaces rajoutés à la fin. 
Fonction Formate(champ :chaîne, longueur :entier) :entier 
Var 
nbspaces,len :entiers 
Début 
len=longueur(champ) 
Si len>longueur Alors 
champ=gauche(chaîne,longueur) 
Sinon 
nbspaces=longueur-len 
Tant que nbspaces<>0 Faire 
champ=champ&" " 
nbspaces=nbspaces-1 
FinTantQue 
FinSi 
Retourne champ 
FinFonct
Quelques  formalismes  algorithmiques  autorisent  parfois  de  préciser  à  l’avance  une  longueur  de  chaîne  à  la 
déclaration de la variable. 
Var 
login :chaîne de 8 caractères
Cela laisse entendre que vous n’avez plus à vous soucier que la chaîne soit trop courte ou trop longue. C’est vrai 
dans l’algorithme, mais attention dans un vrai langage ! Le langage COBOL anciennement au programme du BTS était 
un régal à ce niveau mais en C ou en Java, la taille n’est pas précisée. 
La fonction Formate() fait bien votre affaire. Vous pouvez reconstruire votre enregistrement, puis l’écrire. 
Programme ECRIT 
Var 
fic :fichier séquentiel 
nom,ligne:chaînes 
tlogin,tuid,tpwd,tgid,tcmt,thome,tshell:chaînes 
uid,gid:entiers 
Début 
nom←"passwd" 
Ouvrir nom dans fic en Ajout 
login←"toto" 
uid←500 
gid←501 
... 
/* reconstitution */ 
tlogin←Formate(tlogin,8) 
tuid←Formate(numch(uid),5) 
tgid←Formate(numch(gid),5) 
tpwd←Formate(tpwd,1) 
tcmt←Formate(tcmt,15) 
- 3 -
© ENI Editions - All rigths reserved - Jonifar lina
157
Précédent

- 157/220

Suivant