toto10900 | Code :
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef
- /*-------------------La structure----------------------------------*/
- struct {char titre[10] ;char auteur[10] ;char texte[255];
- int etat; } email;
- /*--------------la fonction qui retourne le nombre d'existence d'email liè à un auteur----------------------*/
- int compte_auteur(char chemin[],char auteur[])
- { int n;
- email m;
- FILE * fp;
- /* ----------------------ouvrir le fichier en lecture ---------------------*/
- fp=fopen(chemin,"r" );
- /*----------------------sortir si le fichier est vide----------------------------*/
- if (fp==NULL)
- {
- puts("erreur fichier est vide" );
- exit(-1);
- }
- /*----------------------------calcul d'occurence-------------------------------------*/
- while(!feof(fp))
- {
- fscanf(fp,"%s\n%s\%s\%d\n",m.titre,m.auteur,m.texte,&m.etat);
- if (stricmp(auteur,m.auteur)==0)
- n++;
- }
- fclose(fp);
- return n;
- };
- /*----------------------------- procedure recoivoir qui ajoute un email ---------------------------*/
- void recevoir(char chemin[],email M )
- {FILE * fp;
- fp=fopen(chemin,"a+" );
- fprintf(fp,"%s\n%s\n%s\n%d\n",M.titre,M.auteur,M.texte,M.etat);
- fclose(fp);
- };
- /*--------------------------copier les messages non lu dans un autre fichier---------------------------*/
- void copier_non_lu(char chemin[],char chemincopie[])
- {
- email m;
- FILE *fp1, *fp2;
- fp1=fopen(chemin,"r" );
- fp2=fopen(chemincopie,"w" );
- /*--------------------------sortir si le fichier est vide-------------------------*/
- if ((fp1==NULL)||(fp2==NULL))
- {
- puts("erreur pas d'emails ou accès interdit" );
- exit(-1);
- }
- /*-----------------------------------copiage ------------------*/
- while (!feof(fp1))
- {
- fscanf(fp1,"%s\n%s\n%s\n%d\n",m.titre,m.auteur,m.texte,&m.etat) ;
- if (m.etat==1)
- {
- fprintf(fp2,"%s\n%s\n%s\n%d\n",m.titre,m.auteur,m.texte,m.etat);
- }
- fclose(fp1);
- fclose(fp2);
- }
- /*la foction qui retoune le nombre d'email dans un fichier*/
- int nombre_email(char chemin[])
- { int n;
- email m;
- FILE * fp;
- fp=fopen(chemin,"r" );
- /*sortir si le fichier est vide et ecrire le message d'erreur avant de sortir*/
- if (fp==NULL)
- {
- puts("fichier vide le programme sortira" );
- delay(5000);
- exit(-1);
- }
- while (!feof(fp))
- {
- fscanf(fp,"%s\n%s\n%s\n%d",m.titre,m.auteur,m.texte,&m.etat);
- n++;
- }
- return n;
- }
- /*la fonction qui deplace les donnèes qui se trouvent dans le fichier dans un tableau de structure email*/
- int charger_tableau(char chemin[],email * tab)
- {
- FILE *fp;
- fp=fopen(chemin,"r" );
- int i=0,n;
- n=nombre_email(chemin);
- if (n!=0)
- {tab=(email*)malloc(sizeof(email)*n);
- while (i<n)
- {
- fscanf(fp,"%s\n%s\n%s\n%d",tab[i].titre,tab[i].auteur,tab[i].texte,&tab[i].etat);
- i++;
- }
- return i;
- }
- else
- {
- puts("erreur le ficher que vous avez donner est vide il ne contient aucun email" );
- return -1;
- }
- }
- }
- void main()
- {
- char * chemin1,*chemin2;
- email *tab;
- puts("donner respectivement le 1ier et le chemein 2" );
- gets(chemin1);
- gets(chemin2);
- copier_non_lu(chemin1,chemin2);
- printf("Nombre total d'emails est =%d et le nombre d'email non lu est =%d \n",nombre_email(chemin1),nombre_email(chemin2));
- }
|
Voila le message d'erreur:
undefined reference to `nombre_email' Message édité par gilou le 30-11-2013 à 10:50:57
|