mercredi 6 avril 2011

Exercices Corrigés : LA GESTION DES LES FICHIERS : Accès séquentiel - Accès direct - En binaire - ASCII

Exercice 1: 

Copier un fichier texte dans un autre: créer un fichier "essai.dat" sous Éditeur. Tester le programme en vérifiant après exécution la présence du fichier copié dans le directory.

Exercice 2: 

Calculer et afficher le nombres de caractères d'un fichier ASCII (Utiliser n'importe quel fichier du répertoire).


Exercice 3: 

Créer et relire un fichier binaire de 10 entiers.

Exercice 4: 

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 5: 

Créer et relire un fichier texte de 5 chaînes de 3 caractères.

Exercice 6: 

Ajouter une fiche (c'est à dire une chaîne de 3 caractères) au fichier précèdent et relire le fichier.

Exercice 7: 

Rechercher une fiche dans le fichier précèdent.

Exercice 8: 

Exercice récapitulatif : Créer une structure nom, prénom, ‚ge. Écrire un programme de gestion de fichier (texte) avec menu d'accueil: possibilité de créer le fichier, de le lire, d'y ajouter une fiche, d'en rechercher une.

-------------------------------------------------------------------------------------------------------
Correction
-------------------------------------------------------------------------------------------------------

Exercice 1:

#include <stdio.h>
#include <conio.h>
void 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 2:

#include <stdio.h>
#include <conio.h>
void 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 3:

#include <stdio.h>
#include <conio.h>
void main()
{
FILE *fichier;
int i,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 4:

#include <stdio.h>
#include <conio.h>
void 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 5:

#include <stdio.h>
#include <conio.h>
void 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 6:

#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 7:

#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");
else printf("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 8:

 #include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct
{
char nom[10];
char prenom[10];
int age;
}
carte;/* creation d'un type carte */
void creer_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);
}
void lire_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'));
}

-------------------------------------------------------------------------------------------------------

0 commentaires:

Enregistrer un commentaire

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites

 

IP