Partage
  • Partager sur Facebook
  • Partager sur Twitter

les fonctions et fichier

aide

    3 janvier 2009 à 22:32:40

    bonsoire
    svp j'ai un tp a rendre l'objectif de ce tp est :
    la creation de deux fonctions.
    _la premiere fonction (rempli):elle ouvre un fichier puis demande les informations de l'etudiant(code,nom,prenom,date de naissance,note) puis elle calcule la moyenne puis elle ferme le fichier
    :) au niveau de la fonction rempli y a pas de probleme.
    _la deusieme fonction(affiche) : elle ouvre le meme fichier fermé en haut puis affiche son contenue( a ce stade j'ai le probleme) :(

    et finalement je manipule les deux fonction a l'aide d'un menu.

    voila le code et merci

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #define x 100
    
    /*declaration de ma structure*/
    struct etudiant{
           int cod;
           char nom[20];
           char prnom[20];
           float note[x];
           float moy;
           char ment[20];
           struct date{
                  int j;
                  int m;
                  int a;
                  }d1;
           };
           
    /*la creation d'un type struct identique a ma structure pour que je puisse le utiluser dans 
    ma fonction rempli()*/
    typedef struct etudiant mas; 
    
    void rempli(char nom_fichier[],mas *mesetu,int nb_etud)
    {
          float note,som;
         //char nom_fichier[]="D:\\fnot_etud";
         int c,ji,mi,ai,i,k,nmat,vs;
         char no[20],pr[20];
        FILE *fichier;
         /*Overture du fechier*/
          fichier=fopen(nom_fichier,"w");
          
          /*test de l'overture*/
          if(!fichier)
          {
                      printf("Impossible d'ovrir ce fichier");
                      }
          /*Lecture des donnees d'enregistrement*/
    printf("\nDonner SVP le nombre NOTES : ");
    scanf("%d",&nmat);
    
    for(i=0;i<nb_etud;i++)
    {
    printf("\n\t Remplissage de fiche_%d",i+1);
    printf("\n\nDonner le code  : ");
    scanf ("%d",&c);
    printf("\nDonner le nom  : ");
    scanf("%s",no);
    printf("\nDonner le prenom  : ");
    scanf("%s",pr);
    printf("\nDonner le jour de naissaince :");
    scanf("%d",&ji);
    printf("\nDonner le mois de naissaince : ");
    scanf("%d",&mi);
    printf("\nDonner la annee de naissaince : ");
    scanf("%d",&ai);
    /* la demande du NOTES et calcul du MOYENNE*/
    som=0;
    for(k=0;k<nmat;k++)
    {
    printf("\nEntre la note %d : ",k+1);
    scanf("%f",&note);
    (*mesetu).note[k]=note;
    som+=(*mesetu).note[k];
    }
    (*mesetu).moy=som/nmat;
    vs=(int)(*mesetu).moy;
    /*determination de la moyenne*/
    switch(vs)//test avec la var moy
          {
                 case 10:
                 case 11:                           
                 strcpy((*mesetu).ment,"PASSABLE");
                 break;
                 case 12:
                 case 13:     
                  strcpy((*mesetu).ment,"A.BIEN");
                 break;
                 case 14:
                 case 15:     
                 strcpy((*mesetu).ment,"BIEN");
                 break;
                 case 16:
                 case 17:
                 case 18:
                 case 19:
                 case 20:               
                 strcpy((*mesetu).ment,"T.BIEN");
                 break;
                 default :
                 strcpy((*mesetu).ment,"REFUSER");
                 break;
                 }            
    strcpy((*mesetu).nom,no);
    strcpy((*mesetu).prnom,pr);
    (*mesetu).d1.j=ji;
    (*mesetu).d1.m=mi;
    (*mesetu).d1.a=ai;
    (*mesetu).cod=c;
    /* lecriture sur le fichier*/
    fprintf(fichier,"%d\t %s\t %s\t %.2f\t %s \t %d-%d-%d\n",(*mesetu).cod,(*mesetu).nom,(*mesetu).prnom,(*mesetu).moy,(*mesetu).ment,(*mesetu).d1.j,(*mesetu).d1.m,(*mesetu).d1.a);
    //fwrite(&mesetu,sizeof(mesetu)+1,1,fichier);   
    /*Fermeture du fichier*/
    }
    fclose(fichier);
    }
    void afiche(char nom_fichier[],mas *e1,int nb_etud)
    {
         int i=0;
         /* j'ai utiliser le passage par adresse car ma fonction affiche le contenue des champ de mastruc*/
        
        FILE *fichier=NULL;
        
    /*Overture du fechier*/
          fichier=fopen(nom_fichier,"r");
          
          /*test de l'overture*/
          if(!fichier)
          {
                      printf("Impossible d'ovrir ce fichier");
                      }
               //       fread(&e1,sizeof(e1)+1,3,fichier);  
    printf("\n code\t nom\t prenom\t moyenne\t mention\t La date_naissance\n");
    fscanf(fichier,"%d%s%s%.2f%s%d%d%d",&(*e1).cod,(*e1).nom,(*e1).prnom,&(*e1).moy,(*e1).ment,&(*e1).d1.j,&(*e1).d1.m,&(*e1).d1.a);
    while (!feof(fichier)&& i< nb_etud)
    {
    fscanf(fichier,"%d%s%s%.2f%s%d%d%d",&(*e1).cod,(*e1).nom,(*e1).prnom,&(*e1).moy,(*e1).ment,&(*e1).d1.j,&(*e1).d1.m,&(*e1).d1.a);
    printf("%d\t %s\t %s\t %.2f\t\t %s \t\t %d-%d-%d\n",(*e1).cod,(*e1).nom,(*e1).prnom,(*e1).moy,(*e1).ment,(*e1).d1.j,(*e1).d1.m,(*e1).d1.a);
    if(nb_etud>=2) printf("\n\t J'ai des problemes au niveau d'afficage des resultat");
    i++;
    }                         
    
    fclose(fichier);
    }
    // le program PRINCIPAL
    main()
    {  
          mas ma;
          char nom_fichier[]="D:\\fnot_etud.txt";
          int nb_etud,menu;
          printf("Donner le nombre d'ETUDIANTS : ");
          scanf("%d",&nb_etud);
         men: printf("\n\n===================MENU===================\n\n");
          printf("\t 1- pour saisire\n\t 2- pour afficher le resultat\n\n");
          printf("Taper votre choix : ");
          scanf("%d",&menu);
          switch(menu)
          {   
          case 1:                                                            
          
          
          rempli(nom_fichier,&ma,nb_etud);
          goto men;
          
          case 2:
          //clrscr() ;
          afiche(nom_fichier,&ma,nb_etud);
          break;
          }
          getch();
          return 0;
          }
    
    • Partager sur Facebook
    • Partager sur Twitter
      4 janvier 2009 à 0:08:45

      bonjour :
      déja il y a cela a corriger :
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c||In function `afiche':|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|135|warning: unknown conversion type character `.' in format|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|135|warning: char format, float arg (arg 6)|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|135|warning: int format, different type arg (arg 7)|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|135|warning: too many arguments for format|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|138|warning: unknown conversion type character `.' in format|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|138|warning: char format, float arg (arg 6)|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|138|warning: int format, different type arg (arg 7)|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|138|warning: too many arguments for format|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|145|error: syntax error before '/' token|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|error: syntax error before string constant|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|warning: type defaults to `int' in declaration of `printf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|warning: function declaration isn't a prototype|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|error: conflicting types for 'printf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|error: conflicting types for 'printf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|151|warning: data definition has no type or storage class|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|error: syntax error before string constant|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|warning: type defaults to `int' in declaration of `scanf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|warning: function declaration isn't a prototype|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|error: conflicting types for 'scanf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|error: conflicting types for 'scanf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|note: a parameter list with an ellipsis can't match an empty parameter name list declaration|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|152|warning: data definition has no type or storage class|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|153|error: syntax error before ':' token|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|154|error: syntax error before string constant|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|154|warning: type defaults to `int' in declaration of `printf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|154|warning: function declaration isn't a prototype|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|154|warning: data definition has no type or storage class|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|155|error: syntax error before string constant|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|155|warning: type defaults to `int' in declaration of `printf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|155|warning: function declaration isn't a prototype|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|155|warning: data definition has no type or storage class|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|156|error: syntax error before string constant|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|156|warning: type defaults to `int' in declaration of `scanf'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|156|warning: function declaration isn't a prototype|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|156|warning: data definition has no type or storage class|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|168|warning: type defaults to `int' in declaration of `getch'|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|168|warning: function declaration isn't a prototype|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|168|warning: data definition has no type or storage class|
      C:\Documents and Settings\darkside\Mes documents\langage c\fractale\new\main.c|169|error: syntax error before "return"|
      ||=== Build finished: 12 errors, 26 warnings ===|

      @+
      • Partager sur Facebook
      • Partager sur Twitter
        4 janvier 2009 à 1:46:55

        je pense que tu as compilé un autre programme mon ami
        • Partager sur Facebook
        • Partager sur Twitter
          4 janvier 2009 à 2:07:07

          Hum, je pense pas qu'il ai compilé un autre programme...

          Perso j'ai ca (et mon compilateur est en mode "large" :
          C:\workspace\Fourmis-Fac\Test\main.c||In function `afiche':|
          C:\workspace\Fourmis-Fac\Test\main.c|128|warning: unknown conversion type character `.' in format|
          C:\workspace\Fourmis-Fac\Test\main.c|128|warning: char format, float arg (arg 6)|
          C:\workspace\Fourmis-Fac\Test\main.c|128|warning: int format, different type arg (arg 7)|
          C:\workspace\Fourmis-Fac\Test\main.c|128|warning: too many arguments for format|
          C:\workspace\Fourmis-Fac\Test\main.c|131|warning: unknown conversion type character `.' in format|
          C:\workspace\Fourmis-Fac\Test\main.c|131|warning: char format, float arg (arg 6)|
          C:\workspace\Fourmis-Fac\Test\main.c|131|warning: int format, different type arg (arg 7)|
          C:\workspace\Fourmis-Fac\Test\main.c|131|warning: too many arguments for format|
          C:\workspace\Fourmis-Fac\Test\main.c|141|warning: return type defaults to `int'|
          C:\workspace\Fourmis-Fac\Test\main.c|141|warning: function declaration isn't a prototype|
          ||=== Build finished: 0 errors, 10 warnings ===|
          • Partager sur Facebook
          • Partager sur Twitter

          les fonctions et fichier

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown