délimiteur  est  plus  complexe  qu’il  n’y paraît. Certes les langages peuvent fournir des fonctions appropriées, 
mais comment feriez­vous vous­même ? 
Sur ce dernier point c’est assez facile à formaliser sous forme d’algorithme. Une fonction "split" reçoit trois paramètres : 
une chaîne de caractères, le délimiteur, et une position de départ. Elle retourne le champ à partir de cette position, qui 
est le numéro de caractère de la chaîne, démarrant à un. Si la fonction retourne une chaîne vide, c’est qu’il n’y a plus 
rien. 
Fonction split(txt :chaîne,delim :caractère,pos :entier) :chaîne
Var
l,i :entiers
tmp :chaîne ;
Début
l=longueur(delim)
tmp←"" 
i←pos 
Tant que i<=l et milieu(txt,i,1)!=delim Faire 
tmp←tmp&milieu(txt,i,1) // un seul caractère concaténé 
i←i+1 
FinTantQue 
Retourne tmp 
FinFonct
Pour  exploiter  cette  fonction  voici  un  petit  programme  qui  recherche successivement tous les champs d’une  ligne.  Il 
suffit de boucler tant que la fonction split ne retourne pas de chaîne vide. À chaque passage dans la boucle il faut 
incrémenter  la  position  de  la  longueur  de  la  chaîne  trouvée,  plus  1  (le  délimiteur),  pour  se  trouver  sur  l’éventuel 
nouveau champ… 
Programme decoupe 
Var 
ligne,result :chaîne 
pos :entier 
Début 
pos←1 
ligne←"root:x:0:0:root:/root:/bin/bash" 
result←"toto" 
Tant que result!="" Faire 
result←decoupe(ligne," :",pos) 
Si result!="" Alors 
Afficher result 
pos←pos+longueur(result)+1 //après le délimiteur 
FinSi 
FinTantQue 
Fin
Vous constatez que le traitement n’est pas anodin, et sur des milliers d’enregistrements ça peut compter. 
2. Largeur fixe 
Dans  des  enregistrements  à  largeur  fixe,  il  n’y  a  pas  de  délimiteurs.  Chaque  champ  a  une  longueur  prédéfinie  et 
occupe toute cette longueur, quitte à être complété par des espaces. Les champs sont ainsi collés les uns aux autres, 
en un seul gros bloc. 
S’il fallait convertir une ligne ci­dessus en enregistrement fixe il faudrait savoir que : 
q Un login fait en principe 8 caractères. 
q Un mot de passe 1 seul (stocké ailleurs). 
q Les UID et GID utilisent au maximum 5 chiffres. 
q Le commentaire sera arbitrairement (pour l’exemple) de 15 caractères. 
q Les chemins et shells arbitrairement aussi à 15 caractères. 
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
152
Précédent

- 152/220

Suivant