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>
int readf (
void main
(void)
{
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");
}
{
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 (
{ 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);
}
}
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;
};
void readfile(
void main()
{
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);
}
{
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(
{ 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