/*---------------------------------------------------------*/ /* */ /* nom du fichier : tp2.c */ /* Depouillement d'enquete */ /* */ /*---------------------------------------------------------*/ #include #include /* declaration d'une structure sondage_t */ typedef struct sondage { char quest[6]; char rep[4]; char depart[3]; int nbrpers; }sondage_t; /* declaration d'une structure libelle_t */ typedef struct libelle { char numqu[6]; char numre[4]; char lib[21]; }libelle_t; /*---------------------------------------------------------*/ /* */ /* procedure init */ /* */ /* conversion d'un fichier texte en fichier binaire */ /* entrees:deux pointeurs vers deux fichier */ /* un pointeur vers une cellule sondage_t */ /* un pointeur vers une cellule libelle_t */ /* */ /*---------------------------------------------------------*/ void init(FILE * ap,FILE * bp,sondage_t * enr,libelle_t * essai) { FILE * fp; FILE * gp; fp = fopen("sond.txt","r"); gp = fopen("sond1.txt","r"); /* conversion du fichier sondage */ fscanf(fp,"%6s %4s %3s %d",enr->quest,enr->rep,enr->depart,&enr->nbrpers); while ( !(feof(fp))) { fwrite(enr,sizeof(sondage_t),1,ap) ; fscanf(fp,"%6s %4s %3s %d",enr->quest,enr->rep,enr->depart,&enr->nbrpers); } /* conversion du fichier sondage */ fscanf(gp,"%6s %4s %20c",essai->numqu,essai->numre,essai->lib); while ( !(feof(gp))) { fwrite(essai,sizeof(libelle_t),1,bp); fscanf(gp,"%6s %4s %20c",essai->numqu,essai->numre,essai->lib); } fclose (fp); fclose (gp); } /*---------------------------------------------------------*/ /* */ /* procedure main */ /* */ /*---------------------------------------------------------*/ void main() { FILE * ip; FILE * jp; FILE * hp; sondage_t * enr; libelle_t * essai; char que[6]; char repo[4]; int totq; int totrep; enr = (sondage_t *) malloc (sizeof(sondage_t)); essai = (libelle_t *) malloc (sizeof(libelle_t)); hp = fopen("synthese.txt","w"); ip = fopen("sondb.txt","w+b") ; jp = fopen("sond1b.txt","w+b") ; init(ip,jp,enr,essai); fclose(ip); fclose(jp); ip = fopen("sondb.txt","r+b") ; jp = fopen("sond1b.txt","r+b"); fread(enr,sizeof(sondage_t),1,ip); while (!(feof (ip))) { fread(essai,sizeof(libelle_t),1,jp); totq = 0; strncpy(que,enr->quest,6) ; fprintf (hp,"QUESTION: %.20s\n\n",essai->lib); while (!(feof (ip)) && (!(strncmp(enr->quest,que,6)))) { totrep = 0; strncpy(repo,enr->rep,4) ; fread(essai,sizeof(libelle_t),1,jp); fprintf(hp,"%.20s departement nbre de personnes\n\n",essai->lib) ; while (!(feof (ip)) && (!(strncmp(enr->quest,que,6))) && (!(strncmp(enr->rep,repo,4)))) { fprintf(hp," %.3s %d \n\n",enr->depart,enr->nbrpers); totrep = enr->nbrpers + totrep ; fread(enr,sizeof(sondage_t),1,ip); } fprintf(hp," TOTAL %d\n\n",totrep) ; totq = totrep + totq ; } fprintf(hp,"Total réponses à la question %.6s %d \n\n",que,totq); } fclose (ip); fclose (jp); fclose (hp); }