Previous Next Up Index Contents

11.5.1. Traitement par enregistrements

Les fichiers texte sont généralement organisés en lignes, c.-à-d. la fin d'une information dans le fichier est marquée par le symbole '\n':

Attention !

Pour pouvoir lire correctement les enregistrements dans un fichier séquentiel, le programmeur doit connaître l'ordre des différentes rubriques (champs) à l'intérieur des enregistrements.

a) Ecrire une information dans un fichier séquentiel

Ecrire dans un fichier séquentiel en langage algorithmique

      écrire <Nom>:<Expr1>
      écrire <Nom>:<Expr2>
      ...
      écrire <Nom>:<ExprN>

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

* <Expr1>, <Expr2>, ... , <ExprN> représentent les rubriques qui forment un enregistrement et dont les valeurs respectives sont écrites dans le fichier.

Ecrire dans un fichier séquentiel en langage C - fprintf

      fprintf( <FP>, "<Form1>\n", <Expr1>);
      fprintf( <FP>, "<Form2>\n", <Expr2>);
      ...
      fprintf( <FP>, "<FormN>\n", <ExprN>);

ou bien

   fprintf(<FP>,"<Form1>\n<Form2>\n...\n<FormN>\n", <Expr1>, <Expr2>, ... , <ExprN>);

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

* <Expr1>, <Expr2>, ... , <ExprN> représentent les rubriques qui forment un enregistrement et dont les valeurs respectives sont écrites dans le fichier.

* <Form1>, <Form2>, ... , <FormN> représentent les spécificateurs de format pour l'écriture des différentes rubriques (voir chapitre 4.3.).

Remarque

L'instruction

fprintf(stdout, "Bonjour\n");

est identique à

printf("\Bonjour\n");

Attention !

Notez que fprintf (et printf) écrit toutes les chaînes de caractères sans le symbole de fin de chaîne '\0'. Dans les fichiers texte, il faut ajouter le symbole de fin de ligne '\n' pour séparer les données.

b) Lire une information dans un fichier séquentiel

Lire dans un fichier séquentiel en langage algorithmique

      lire <Nom>:<Var1>
      lire <Nom>:<Var2>
      ...
      lire <Nom>:<VarN>
* <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.

* <Var1>, <Var2>, ... , <VarN> représentent les variables qui vont recevoir les valeurs des différentes rubriques d'un enregistrement lu dans le fichier.

Lire dans un fichier séquentiel en langage C - fscanf

      fscanf( <FP>, "<Form1>\n", <Adr1>);
      fscanf( <FP>, "<Form2>\n", <Adr2>);
      ...
      fscanf( <FP>, "<FormN>\n", <AdrN>);

ou bien

      fscanf(<FP>,"<Form1>\n<Form2>\n...\n<FormN>\n", <Adr1>, <Adr2>, ... , <AdrN>);
* <FP> est un pointeur du type FILE* qui est relié au nom du fichier à lire.

* <Adr1>, <Adr2>, ... , <AdrN> représentent les adresses des variables qui vont recevoir les valeurs des différentes rubriques d'un enregistrement lu dans le fichier.

* <Form1>, <Form2>, ... , <FormN> représentent les spécificateurs de format pour la lecture des différentes rubriques (voir chapitre 4.4.).

Remarque

L'instruction

fscanf(stdin, "%d\n", &N);
est identique à
scanf("%d\n", &N);
Attention !

Pour les fonctions scanf et fscanf tous les signes d'espacement sont équivalents comme séparateurs. En conséquence, à l'aide de fscanf, il nous sera impossible de lire toute une phrase dans laquelle les mots sont séparés par des espaces.


Previous Next Up Index Contents


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