aide svp

aide svp - C - Programmation

Marsh Posté le 29-11-2013 à 02:33:46    

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. typedef
  5. /*-------------------La structure----------------------------------*/
  6. struct  {char titre[10] ;char auteur[10] ;char texte[255];
  7.             int etat;  } email;
  8.   /*--------------la fonction qui retourne le nombre d'existence d'email liè à un auteur----------------------*/
  9. int compte_auteur(char chemin[],char auteur[])
  10. {    int n;
  11.     email m;
  12.     FILE * fp;
  13.     /* ----------------------ouvrir le fichier en lecture ---------------------*/
  14.     fp=fopen(chemin,"r" );
  15.     /*----------------------sortir si le fichier est vide----------------------------*/
  16.     if (fp==NULL)
  17.     {
  18.         puts("erreur fichier est vide" );
  19.         exit(-1);
  20.     }
  21.     /*----------------------------calcul d'occurence-------------------------------------*/
  22.     while(!feof(fp))
  23.     {
  24.         fscanf(fp,"%s\n%s\%s\%d\n",m.titre,m.auteur,m.texte,&m.etat);
  25.         if (stricmp(auteur,m.auteur)==0)
  26.             n++;
  27.     }
  28.             fclose(fp);
  29.             return n;
  30. };
  31. /*----------------------------- procedure recoivoir qui ajoute un email ---------------------------*/
  32. void recevoir(char chemin[],email M )
  33. {FILE * fp;
  34. fp=fopen(chemin,"a+" );
  35. fprintf(fp,"%s\n%s\n%s\n%d\n",M.titre,M.auteur,M.texte,M.etat);
  36. fclose(fp);
  37. };
  38. /*--------------------------copier les messages non lu dans un autre fichier---------------------------*/
  39. void copier_non_lu(char chemin[],char chemincopie[])
  40. {
  41. email m;
  42.     FILE *fp1, *fp2;
  43.     fp1=fopen(chemin,"r" );
  44.     fp2=fopen(chemincopie,"w" );
  45.     /*--------------------------sortir si le fichier est vide-------------------------*/
  46.     if ((fp1==NULL)||(fp2==NULL))
  47.     {
  48.         puts("erreur pas d'emails ou accès interdit" );
  49.         exit(-1);
  50.     }
  51.     /*-----------------------------------copiage ------------------*/
  52.     while (!feof(fp1))
  53.     {
  54.       fscanf(fp1,"%s\n%s\n%s\n%d\n",m.titre,m.auteur,m.texte,&m.etat) ;
  55.       if (m.etat==1)
  56.       {
  57.           fprintf(fp2,"%s\n%s\n%s\n%d\n",m.titre,m.auteur,m.texte,m.etat);
  58.       }
  59.       fclose(fp1);
  60.       fclose(fp2);
  61.     }
  62.     /*la foction qui retoune le nombre d'email dans un fichier*/
  63.     int nombre_email(char chemin[])
  64.     {   int n;
  65.         email m;
  66.         FILE * fp;
  67.         fp=fopen(chemin,"r" );
  68.         /*sortir si le fichier est vide et ecrire le message d'erreur avant de sortir*/
  69.         if (fp==NULL)
  70.         {
  71.             puts("fichier vide le programme sortira" );
  72.             delay(5000);
  73.             exit(-1);
  74.         }
  75.         while (!feof(fp))
  76.         {
  77.             fscanf(fp,"%s\n%s\n%s\n%d",m.titre,m.auteur,m.texte,&m.etat);
  78.             n++;
  79.         }
  80.         return n;
  81.     }
  82.      /*la fonction qui deplace les donnèes qui se trouvent dans le fichier dans un tableau de structure email*/
  83. int charger_tableau(char chemin[],email * tab)
  84. {
  85.     FILE *fp;
  86.     fp=fopen(chemin,"r" );
  87.     int i=0,n;
  88.     n=nombre_email(chemin);
  89.     if (n!=0)
  90.     {tab=(email*)malloc(sizeof(email)*n);
  91.     while (i<n)
  92.     {
  93.         fscanf(fp,"%s\n%s\n%s\n%d",tab[i].titre,tab[i].auteur,tab[i].texte,&tab[i].etat);
  94.         i++;
  95.     }
  96.     return i;
  97.     }
  98.     else
  99.     {
  100.         puts("erreur le ficher que vous avez donner est vide il ne contient aucun email" );
  101.         return -1;
  102.     }
  103. }
  104. }
  105. void main()
  106. {
  107.     char * chemin1,*chemin2;
  108.      email *tab;
  109.     puts("donner respectivement le 1ier et le chemein 2" );
  110.     gets(chemin1);
  111.     gets(chemin2);
  112. copier_non_lu(chemin1,chemin2);
  113. printf("Nombre total d'emails est =%d et le nombre d'email non lu est =%d  \n",nombre_email(chemin1),nombre_email(chemin2));
  114. }


 
 
 
Voila le message d'erreur:
 undefined reference to `nombre_email'


Message édité par gilou le 30-11-2013 à 10:50:57
Reply

Marsh Posté le 29-11-2013 à 02:33:46   

Reply

Marsh Posté le 29-11-2013 à 11:13:31    

Un accolade est mal placée (ligne 112), ce qui fait que ta fonction "copier_non_lu" contient les fonctions suivantes :

  • int nombre_email(char chemin[])
  • int charger_tableau(char chemin[],email * tab)


Il déplacer cet accolade ligne 64.

Reply

Marsh Posté le 29-11-2013 à 17:25:38    

Bonjour, SVP, merci...  [:ohap]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed