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.
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