td3 Corr
td3 Corr
td3 Corr
T.D. N° 03
Les fichiers
Exercice n°01
Écrire un programme C permettant d’afficher le contenu d’un fichier texte en numérotant les lignes. Ces
lignes ne devront jamais comporter plus de 60 caractères.
#include <stdio.h>
int main()
{
FILE * entree ;
int num = 1 ; /* numéro de ligne */
char ligne [60] ; /* tampon d’une ligne */
entree = fopen ("d:\cours.txt", "r") ;
printf (" **** Contenu du fichier cours.txt ****\n" ) ;
while ( !feof(entree))
{
fgets (ligne, 60, entree) ;
printf ("%5d ", num) ;
printf ("%s", ligne) ;
num=num+1;
}
return 0;
}
#include <stdio.h>
#include <string.h>
main()
{
FILE * sortie ;
char mat [10];
char nom [20] ;
char prenom [15] ;
int age ;
char sexe ;
sortie = fopen ("d://employ.txt", "w") ;
printf (" --- pour finir la saisie, tapez age 0 ---\n") ;
do{
printf ("Matricule : ");scanf ("%s", &mat);
printf ("nom : "); scanf ("%s", &nom);
printf ("prénom : ") ; scanf ("%s", &prenom) ;
printf ("sexe (f:femini : m:masculin) :") ;scanf ("%s", &sexe) ;
printf ("age : ") ; scanf ("%d", &age);
if (age!=0)fprintf(sortie,"%s\t%s\t%s\t%d\t%c\n" ,mat,nom,prenom,age,sexe); /* \t : tabulation entre les
champs */
} while (age!=0);
fclose (sortie) ;
}
Écrire un programme permettant, à partir du fichier créé par l’exercice précédent, de retrouver les
informations correspondant à un employé de nom donné.
#include <stdio.h>
#include <string.h>
main()
{
FILE * fich ;
char mat [10];
char nom [20] ;
char prenom [15] ;
int age ;
char sexe ;
char nomcher[20]; /* nom a rechercher*/
int trouve; /* indicateur prends 1 si le nom recherché existe , 0 sinon */
fich = fopen ("d://employ.txt", "r") ; /*** ouverture du fichier en mode lecture*/
printf (" Quel nom recherchez-vous : ") ;
scanf("%s",&nomcher) ;
trouve = 0 ;
do{
fscanf(fich,"%s\t%s\t%s\t%d\t%c\n" ,&mat,&nom,&prenom,&age,&sexe);
if ( strcmp (nomcher,nom)==0 ) trouve = 1 ; /***stcrmp : compare entre 2 chaine , elle retourne
0 si egaux***/
} while ( (!trouve) && (!feof(fich)) ) ; /*** feof : fin de fichier : retrourne vrai si la fin est atteinte
***/
if (trouve==1)
{
printf("le nom %s existe :\n",nomcher);
printf ("nom : %s\n", nom) ;
printf ("prénom : %s\n", prenom) ;
printf ("age : %d\n", age) ;
printf ("sexe : %c\n", sexe) ;
}
fclose (fich) ;
}
#include <stdio.h>
#include <string.h>
main()
{
FILE * fich ;
FILE * fhomme ; /* fichier dans lequel on va stocker les employés masculin*/
FILE * ffemme ; /* fichier dans lequel on va stocker les employés feminin*/
char mat [10];
char nom [20] ;
char prenom [15] ;
int age ;
char sexe ;
char nomcher[20]; /* nom a rechercher*/
int trouve; /* indicateur prends 1 si le nom recherché existe , 0 sinon */
fich = fopen ("d://employ.txt", "r") ; /*** ouverture du fichier en mode lecture*/
fhomme = fopen ("d://homme.txt", "w") ; /*** ouverture du fichier homme en mode ecriture*/
ffemme = fopen ("d://femme.txt", "w") ; /*** ouverture du fichier femme mode ecriture*/
trouve = 0 ;
do{
fscanf(fich,"%s\t%s\t%s\t%d\t%c\n" ,&mat,&nom,&prenom,&age,&sexe);
fclose (fich) ;
}
a) Écrire une fonction qui donne la moyenne d’un étudiant à partir de son code.
b) Ecrire une fonction qui donne la moyenne d’un étudiant à partir de son nom et son prénom.
c) Ecrire une procédure qui permet de créer 3 nouveaux fichiers, chaque fichier contient le code ,
le nom, le prénom , la spécialité et la moyenne des étudiants de même spécialité.( Info , Eln, Tel)
#include <stdio.h>
#include <string.h>
moy=rechmoy(f,code);
if (strcmp (spe,"Info")==0) fprintf(finf,"%s\t%s\t%s\t%f\n" ,code,name,pname,moy);
else if (strcmp (spe,"Eln")==0) fprintf(feln,"%s\t%s\t%s\t%f\n" ,code,name,pname,moy);
else if (strcmp (spe,"Tel")==0) fprintf(ftel,"%s\t%s\t%s\t%f\n" ,code,name,pname,moy);
} while ( !feof(f1) ) ;
fclose(finf);fclose(ftel);fclose(feln);
}
//*******************************Le programme principal********************//
Int main()
{
FILE * fetud ,*finf,*feln,*ftel;
FILE * fres ;
char code[10],nom[20],prenom[20];
float m;
fetud = fopen ("d://etudiants.txt", "r") ; /*** ouverture du fichier en mode lecture*/
fres = fopen ("d://resultats.txt", "r") ; /*** ouverture du fichier en mode lecture*/
printf("tapez votre code :");scanf("%s",&code);
m=rechmoy(fres,code);
if (m!=-1) printf("votre moyenne est %f\n",m);
else printf("code innexistant!!!!\n");