EXERCICE XI

FICHIERS

1.      Exemple 1. Faire un programme de création et affichage d’un fichier texte.

 

#include <stdio.h>

#include <string.h>

#include <ctype.h>

FILE *writef (char *filename);

int readf (FILE *fp, char *filename);

void main (void)

{     FILE *file;

      char fname[20];

      int ret, number, i;

      printf("Entrer le nom de fichier: ");

      scanf("%s", fname);

      printf("Entrer texte (ou <CTRL/Z> ).\n");

      file = writef (fname);

      if(file != NULL)

            printf("\nFichier est cree .\n\n");

      ret = readf(file, fname);

      if(ret) printf ("\nFichier est affiche.\n");

}

FILE *writef (char *filename)

{     FILE *fp;

      int ch;

      fp = fopen(filename, "w");

      if(fp==NULL)

            printf ("\nLe fichier %s n'est pas ouvert!\n", filename);

      else

      {     fflush (stdin);

            while ((ch=getchar()) != EOF)

                  fputc (ch, fp);

            fclose (fp);

      }

      return (fp);

}

int readf (FILE *fp, char *filename)

{     int ch, flag;

      fp = fopen(filename, "r");

      if(fp==NULL)

      {     printf ("\nLe fichier %s n'est pas ouvert !\n", filename);

             return (0);

      }

      else

      {     flag = 0;

            while ((ch=fgetc(fp)) != EOF)

            {     flag = 1;

                  putchar (ch);

            }

            fclose (fp);

            if (!flag)printf ("Le fichier est vide!\n");

            return(flag);

      }

}

 

exécuter ici

 

1.     Exemple 2. Modifier le programme d'exemple 1 et déterminer le nombre d’occurance d’un mot donné dans le fichier.

 

2.     Exemple 3. Faire un programme de création d’un fichier binaire, dont les ėlėments sont structures. Chaque structure a les champs suivants: nom, groupe, note moyenne. Déterminer l'élément avec la note moyenne maximale et afficher à l'écran l'information d'élément trouvé.

#include<stdio.h>

#include<process.h>

#include<conio.h>

#include<ctype.h>

struct student

{ char name[60];

  int group;

  float av_score;

};

FILE *writefile(char *name_file);

void readfile(FILE *fp,char *name_file);

void main()

{ FILE *pf;

  char name_file[30];

  printf("\nEntrer le nom de fichier=>");

  gets(name_file);

  pf=writefile(name_file);

  if(pf!=NULL)

     printf("\n Fichier est creé! \n");

  else

  { printf("\nLe fichier n'est pas creé!\n");

     exit(1);

  }

  readfile(pf,name_file);

}

FILE *writefile(char *name_file)

{ FILE *fp;

  struct student s;

  char ch;

  if((fp=fopen(name_file,"wb"))==NULL)

  { printf("\nLe fichier %s n'est pas creé!\n", name_file);

     exit(1);

  }

  do                                        

  { printf("\n name=>");                        

     gets(s.name);                             

     printf("\n group=>");

     scanf("%d",&s.group);

     printf("\n av_score=>");

     scanf("%f",&s.av_score);

     while((ch=getchar())!='\n')                 

     fwrite(&s,sizeof(s),1,fp);

    printf("L'entré d'un élément suivant dans le fichier? Y/N=>");

  } while(toupper(getche())=='Y');

  fclose(fp);

  return(fp);

}

void readfile(FILE *fp,char *name_file)

{ struct student s;

  int flag=0;

  long int pos;

  float max_av;

  if((fp=fopen(name_file,"rb"))==NULL)

  { printf("\nLe fichier n’est pas ouvert !\n");

     exit(1);

  }

  while(fread(&s,sizeof(s),1,fp)==1)

  { if(!flag)

     { max_av=s.av_score;

       pos=ftell(fp)-sizeof(s);                    

       flag=1;

     }                               

     else

       if(s.av_score>max_av)

       { max_av=s.av_score;

          pos=ftell(fp)-sizeof(s);

       }

  }

  fseek(fp,pos,0);                          

  fread(&s,sizeof(s),1,fp);                   

  printf("\n%s %d %.2f\n",s.name,s.group,s.av_score);

  fclose(fp);

}

3.     Exemple 4.  Modifier le programme d'exemple 3 et afficher à l'écran l'information d'élément  d’un groupe donné qui a la note moyenne maximale s’il existe et si non – afficher un message.

 

 Page précédente         Page suivante     Sommaire