Travaux pratiques : Gestion des fichiers Série N° : 3 Filière :SMI /S: 4 Module
Travaux pratiques : Gestion des fichiers Série N° : 3 Filière :SMI /S: 4 Module :Programmation II Exercice : 1 Ecrire un programme qui lit et affiche dans un fichier source textel’élément pers1 de la structure Personne qui a les champs: nom, cne, notes(n1, n2, n3),moyenne, mention. Exercice : 2 Ecrire un programme en C qui lit le contenu du fichier texte source.txt, et le recopie caractère par caractère dans le fichier destination.doc, vérifier après l’exécution la présence du fichier copié dans le directory. Exercice :3 Calculer et afficher le nombre de caractères d’un fichier ASCII (utiliser le fichier source.txt). Exercice :4 Créer et relire un fichier binaire de 10 entiers. Exercice :5 Lire un fichier texte avec un contrôle d’erreur : l’utilisateur saisit le nom du fichier, La machine retourne le listing du fichier s’il existe et un message d’erreur s’il n’existe pas. Exercice : 6 Crée et relire un fichier texte de 7 chaines de 4 caractères. Exercice : 7 Ajouter une fiche (c.-à-d. une chaine de 5 caractères) au fichier précédent et relire le fichier. Exercice : 8 Rechercher une fiche dans le fichier précédent. Exercice : 9 Exercice récapitulatif : créer une structure nom, prénom, âge. Ecrire un programme de gestion de fichier (texte) avec menu d’accueil : pos une possibilité de créer le fichier, de le lire, D’y ajouter une fiche, d’en rechercher une. Corrections Exercice 1: #include <stdio.h> #include <stdlib.h> #include <conio.h> typedefstructPersonne /*structure personne */ { char nom[10] ; float n1,n2,n3,moy; intcne ; }; structPersonne pers1; /* pers1 est un element de type strcture */ int main () { FILE *f ; char *fichier="source.txt"; f= fopen(fichier, "w" ); /* insertion des données*/ printf(" nom de l etudiant = "); scanf("%s",&pers1.nom); printf(" cne de l etudiant = "); scanf("%d",&pers1.cne); printf(" note1 de l etudiant = "); scanf("%f",&pers1.n1); printf(" note2 de l etudiant = "); scanf("%f",&pers1.n2); printf(" note3 de l etudiant = "); scanf("%f",&pers1.n3); /*********ecriture dans un fichier*************/ fprintf(f, "\n le programmeur a entrer le nom : %s \n", pers1.nom); fprintf(f, "\n le programmeur a entrer le cne : %d \n", pers1.cne); fprintf(f, "\n le programmeur a entrer la note1: %2.2f \n", pers1.n1); fprintf(f, "\n le programmeur a entrer la note2: %2.2f \n", pers1.n2); fprintf(f, "\n le programmeur a entrer la note3: %2.2f \n", pers1.n3); printf("\n========+++++++==========\n");fprintf(f,"\n =======+++++++++++++++============\n"); /* affichage des infos*/ printf("\n le nom : %s\n", pers1.nom); printf("\n le cne : %d\n", pers1.cne); printf("\n note1 : %2.2f \n", pers1.n1); printf("\n note2 : %2.2f \n", pers1.n2); printf("\n note3 : %2.2f \n", pers1.n3); printf("\n moyenne = %2.2f \n", pers1.moy); printf("\n la moyenne est: %2.2f \n",(pers1.n1+pers1.n2+pers1.n3)/3); fprintf(f, "\n la moyenne est: %2.2f \n",(pers1.n1+pers1.n2+pers1.n3)/3); getch(); } Exercice 2: #include<stdio.h> #include<conio.h> int main() { FILE *fichier1,*fichier2; char c; printf("COPIE EN COURS ...\n"); fichier1 = fopen("c:\\bc5\\Courc_C\\Teach_C\\CHAP9\\essai.dat","r"); fichier2 = fopen("copie.dat","w"); while((c=(char)getc(fichier1))!=EOF)putc(c,fichier2); fclose(fichier1); fclose(fichier2); printf("C'EST FINI !\n"); printf("\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 3: #include<stdio.h> #include<conio.h> int main() { FILE *fichier; int compteur=0; fichier = fopen("c:\\bc5\\Courc_C\\teach_C\\chap9\\copie.dat","r"); while(getc(fichier)!=EOF)compteur++; fclose(fichier); printf("TAILLE DU FICHIER: %d OCTETS\n",compteur); printf("\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 4: #include<stdio.h> #include<conio.h> void main() { FILE *fichier; inti,n; fichier = fopen("nombre.dat","wb+"); for(i=0;i<10;i++) { printf("N = "); scanf("%d",&n); putw(n,fichier); } rewind(fichier); while(!feof(fichier)) /* essayer avec une boucle for */ { n=getw(fichier); printf("%d ",n); } fclose(fichier); printf("\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 5: #include<stdio.h> #include<conio.h> int main() { FILE *fichier; char c,nom[10]; printf("NOM DU FICHIER A LISTER: "); gets(nom); if((fichier = fopen(nom,"r"))==NULL) printf("\nERREUR A L'OUVERTURE, CE FICHIER N'EXISTE PAS\n"); else { printf("\n\t\t\tLISTING DU FICHIER\n"); printf("\t\t\t------------------\n\n"); while((c=getc(fichier))!=EOF)printf("%c",c); } fclose(fichier); printf("\n\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 6: #include<stdio.h> #include<conio.h> int main() { FILE *fichier; int i; char p[4]; /* saisie du fichier */ fichier = fopen("chaine.dat","w+"); printf("\nENTRER 5 CHAINES DE 3 CARACTERES\n"); for(i=0;i<5;i++) { gets(p); fputs(p,fichier); } rewind(fichier); /* pointeur au debut */ /* relecture du fichier */ printf("\n\nLECTURE DU FICHIER\n\n"); while((fgets(p,4,fichier))!=NULL)printf("%s ",p); fclose(fichier); printf("\n\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 7: #include<stdio.h> #include<conio.h> void main() { FILE *fichier; char p[4]; /* ajout d'une chaine */ fichier = fopen("chaine.dat","a+"); /* pointeur a la fin */ printf("\nENTRER LA CHAINE DE 3 CARACTERES A AJOUTER\n"); gets(p); fputs(p,fichier); /*lecture du fichier pour verification */ rewind(fichier); printf("\n\nLECTURE DU FICHIER\n"); while((fgets(p,4,fichier))!=NULL)printf("%s ",p); fclose(fichier); printf("\n\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 8: #include<stdio.h> #include<conio.h> #include<string.h> void main() { FILE *fichier; char p[4],q[4],trouve=0; /* recherche d'une chaine */ fichier = fopen("chaine.dat","r"); /* lecture seule */ printf("\nENTRER LA CHAINE DE 3 CARACTERES RECHERCHEE\n"); gets(p); printf("\n\nRECHERCHE ...\n\n"); while(((fgets(q,4,fichier))!=NULL)&&(trouve==0)) if(strcmp(p,q)==0)trouve = 1; /* compare les chaines */ if (trouve ==0) printf("CETTE CHAINE N'EXISTE PAS DANS LE FICHIER\n"); elseprintf("CHAINE TROUVEE DANS LE FICHIER\n"); /*lecture du fichier pour verification */ rewind(fichier); printf("\n\nLECTURE DU FICHIER\n"); while((fgets(q,4,fichier))!=NULL)printf("%s ",q); fclose(fichier); printf("\n\nPOUR SORTIR FRAPPER UNE TOUCHE "); getch(); } Exercice 9: #include<stdio.h> #include<conio.h> #include<string.h> typedefstruct { char nom[10]; char prenom[10]; intage; } carte;/* creation d'un type carte */ voidcreer_fichier(FILE *f,char *n) { char choix; carte fiche; clrscr(); printf("CREATION DU FICHIER \n\n"); printf("NOM DU FICHIER A CREER: "); gets(n); flushall(); f = fopen(n,"w"); do { printf("\nSAISIE D'UNE FICHE ?(o/n) "); choix = (char)getchar(); flushall(); if ((choix=='o')||(choix=='O')) { printf("\nNOM: ");gets(fiche.nom); printf("PRENOM: ");gets(fiche.prenom); printf("AGE: ");scanf("%d",&fiche.age); flushall(); fwrite(&fiche,sizeof(carte),1,f); } } while((choix=='o')||(choix=='O')); fclose(f); } voidlire_fichier(FILE *f,char *n) { carte fiche; int compteur=0; clrscr(); printf("LECTURE DU FICHIER\n\n"); printf("NOM DU FICHIER A LIRE: ");gets(n); flushall(); f = fopen(n,"r"); if (f == NULL) printf("\nERREUR, CE FICHIER N'EXISTE PAS\n\n"); else { printf("\nLISTING DU FICHIER\n\n"); while(fread(&fiche,sizeof(carte),1,f)!=0) { printf("fiche nø%d: \n",compteur); compteur++; printf("%s %s %d an(s)\n\n",fiche.nom,fiche.prenom,fiche.age); } fclose(f); } printf("POUR CONTINUER FRAPPER UNE TOUCHE "); getch(); } void ajout(FILE *f,char *n) { carte fiche; char choix; clrscr(); printf("AJOUT D'UNE FICHE \n\n"); printf("NOM DU FICHIER A MODIFIER: "); gets(n); flushall(); f = fopen(n,"a"); do { printf("\nSAISIE D'UNE FICHE ?(o/n) "); choix = (char)getchar(); flushall(); if ((choix=='o')||(choix=='O')) { printf("\nNOM: ");gets(fiche.nom); printf("PRENOM: ");gets(fiche.prenom); printf("AGE: ");scanf("%d",&fiche.age); flushall(); fwrite(&fiche,sizeof(carte),1,f); } } while((choix=='o')||(choix=='O')); fclose(f); } void recherche(FILE *f,char *n) { carte fiche; int compteur=0; char trouve = 0,nn[10],pp[10]; clrscr(); printf("RECHERCHE DE FICHE\n\n"); printf("NOM DU FICHIER: "); gets(n); flushall(); f = fopen(n,"r"); printf("\nFICHE A RETROUVER:\n"); printf("NOM: ");gets(nn); printf("PRENOM: ");gets(pp); flushall(); while((fread(&fiche,sizeof(carte),1,f)!=0)&&(trouve==0)) { if((strcmp(fiche.nom,nn)==0)&&(strcmp(fiche.prenom,pp)==0)) { trouve=1; printf("FICHE RETROUVEE: FICHE nø%2d\n",compteur); } compteur++; } if (trouve==0)printf("CETTE FICHE N'EXISTE PAS\n"); fclose(f); printf("POUR CONTINUER FRAPPER UNE TOUCHE "); getch(); } void main() { FILE *fichier; char nom[10];/* nom du fichier */ char choix; do { clrscr(); printf("\t\t\tGESTION DE FICHIER\n"); printf("\t\t\t------------------\n\n\n"); printf("CREATION DU FICHIER ---> 1\n"); printf("LECTURE DU FICHIER ---> 2\n"); printf("AJOUTER UNE FICHE ---> 3\n"); printf("RECHERCHER UNE FICHE ---> 4\n"); printf("SORTIE ---> S\n\n"); printf("VOTRE CHOIX: "); choix = (char)getchar(); flushall(); switch(choix) { case '1':creer_fichier(fichier,nom);break; case '2':lire_fichier(fichier,nom);break; case '3':ajout(fichier,nom);break; case '4':recherche(fichier,nom);break; } } while ((choix!='S') && (choix!='s')); 2020-2021 Page 6 uploads/Geographie/ smi-s4-tps-serie-3-et-correction-langage-c.pdf
Documents similaires










-
30
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 02, 2022
- Catégorie Geography / Geogra...
- Langue French
- Taille du fichier 0.3105MB