Previous Next Up Index Contents

11.3.2. Exemple: Créer et afficher un fichier séquentiel

Avant de discuter les détails du traitement des fichiers, nous vous présentons un petit exemple comparatif qui réunit les opérations les plus importantes sur les fichiers.

Problème

On se propose de créer un fichier qui est formé d'enregistrements contenant comme information le nom d'une personne. Chaque enregistrement est donc constitué d'une seule rubrique, à savoir, le nom de la personne.

L'utilisateur doit entrer au clavier le nom du fichier, le nombre de personnes et les noms des personnes. Le programme se chargera de créer le fichier correspondant sur disque dur ou sur disquette.

Après avoir écrit et fermé le fichier, le programme va rouvrir le même fichier en lecture et afficher son contenu, sans utiliser le nombre d'enregistrements introduit dans la première partie.

Solution en langage algorithmique

programme PERSONNEL
  chaîne NOM_FICHIER, NOM_PERS
  entier C,_NB_ENREG

  (* Première partie : 
     Créer et remplir le fichier *)
  écrire "Entrez le nom du fichier à créer : "
  lire NOM_FICHIER
  ouvrir NOM_FICHIER en écriture 
   écrire "Nombre d'enregistrements à créer : "
  lire NB_ENREG
  en C ranger 0
  tant que (C<NB_ENREG) faire
  |  écrire "Entrez le nom de la personne : "
  |  lire NOM_PERS
  |  écrire NOM_FICHIER:NOM_PERS
  |  en C ranger C+1
  ftant (* C=NB_ENREG *)
  fermer NOM_FICHIER 
(* Deuxième partie : 
     Lire et afficher le contenu du fichier *)
  ouvrir NOM_FICHIER en lecture 
  en C ranger 0
  tant que non(finfichier(NOM_FICHIER)) faire
  |  lire NOM_FICHIER:NOM_PERS
  |  écrire "NOM : ",NOM_PERS
  |  en C ranger C+1
  ftant
  fermer NOM_FICHIER   
fprogramme (* fin PERSONNEL *)  

Solution en langage C

#include <stdio.h>

main()
{
  FILE *P_FICHIER; /* pointeur sur FILE */
  char NOM_FICHIER[30], NOM_PERS[30];
  int  C,NB_ENREG;

  /* Première partie : 
     Créer et remplir le fichier */
  printf("Entrez le nom du fichier à créer : ");
  scanf("%s", NOM_FICHIER);
  P_FICHIER = fopen(NOM_FICHIER, "w");  /* write */
  printf("Nombre d'enregistrements à créer : ");
  scanf("%d", &NB_ENREG);
  C = 0;
  while (C<NB_ENREG)
     { 
      printf("Entrez le nom de la personne : ");
      scanf("%s", NOM_PERS);
      fprintf(P_FICHIER, "%s\n", NOM_PERS);
      C++;
     }
  fclose(P_FICHIER);

  /* Deuxième partie : 
     Lire et afficher le contenu du fichier */
  P_FICHIER = fopen(NOM_FICHIER, "r");  /* read */
  C = 0;
  while (!feof(P_FICHIER))
     {
      fscanf(P_FICHIER, "%s\n", NOM_PERS);
      printf("NOM : %s\n", NOM_PERS);
      C++;
     }
  fclose(P_FICHIER);
  return 0;
} 

>> Voir aussi: Chapitre 11.4.3. Exemples: Ouvrir et fermer des fichiers en pratique


Previous Next Up Index Contents

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