IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

probleme fichier en c


Sujet :

C

  1. #1
    Invité(e)
    Invité(e)
    Par défaut probleme fichier en c
    bonjour
    j'ai un probleme avec les fichiers
    on nous a demande de cree le ficheir eleve, qui contient le code eleve son nom ,son prenom et sa moyenne generale.
    je donne un exemple d'un eleve je donne le code....etc
    et je voulai vérifier si les informations on bien été entrer(lue)
    mais au moment de l'affichage j'obtient rien
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct {
                     int code_etudiant;
                     char nom[15];
                     char prenom[15];
                     float moy_annee;
                     char mention[9];
                    } etudiant;
    int main(int argc, char *argv[])
    {
        etudiant e;
        FILE *f; /*f est un nom logique*/
     
      f=fopen("c:/fiche_eleve","wb+");
      if(f==NULL){
                  printf("creation non faite");
      }
    fwrite(&e,sizeof(e),1,f);
    printf("entrer le code nom prenom et la moyanne generale:\n");
    scanf("%d %s %s %f",&e.code_etudiant,&e.nom,&e.prenom,&e.moy_annee);                                                                        
    fread(&e,sizeof(e),1,f);
     
    printf("le code=%d nom %s prenom %s moyenne %f",e.code_etudiant,e.nom,e.prenom,e.moy_annee); 
    fclose(f);
      system("PAUSE");	
      return 0;
    }

  2. #2
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Juste comme ça. Le fwrite() ne devrait pas être après le scanf().

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 32

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Points : 135
    Points
    135
    Par défaut
    Salut !

    1. N'utilises pas scanf car tu l'utilises mal, recherche sur google ou même sur le forum l'utilisation de fgets et sscanf.

    2. Tu mélanges les formats a envoyer à une fonction comme scanf ou printf. (Je crois que cela provoque un seg fault, ce qui est très grave)

    Une chaîne s'envoie sans le &.
    Un entier/decimal s'envoie avec le &.

    Bref, ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%d %s %s %f",&e.code_etudiant,e.nom,e.prenom,&e.moy_annee);
    Mais tu n'as aucune garanti que l'utilisateur entrera exactement ce que scanf attends donc ton programme plantera très rapidement.

    PS : Je ne connais pas fwrite ni fread, merci je vais voir ce que c'est

    Kr00pS

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut Re: probleme fichier en c
    Citation Envoyé par brakeche
    bonjour
    j'ai un probleme avec les fichiers
    on nous a demande de cree le ficheir eleve, qui contient le code eleve son nom ,son prenom et sa moyenne generale.
    je donne un exemple d'un eleve je donne le code....etc
    et je voulai vérifier si les informations on bien été entrer(lue)
    mais au moment de l'affichage j'obtient rien
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct {
                     int code_etudiant;
                     char nom[15];
                     char prenom[15];
                     float moy_annee;
                     char mention[9];
                    } etudiant;
    int main(int argc, char *argv[])
    {
        etudiant e;
        FILE *f; /*f est un nom logique*/
     
      f=fopen("c:/fiche_eleve","wb+");
      if(f==NULL){
                  printf("creation non faite");
      }
    fwrite(&e,sizeof(e),1,f);
    printf("entrer le code nom prenom et la moyanne generale:\n");
    scanf("%d %s %s %f",&e.code_etudiant,&e.nom,&e.prenom,&e.moy_annee);                                                                        
    fread(&e,sizeof(e),1,f);
     
    printf("le code=%d nom %s prenom %s moyenne %f",e.code_etudiant,e.nom,e.prenom,e.moy_annee); 
    fclose(f);
      system("PAUSE");	
      return 0;
    }
    Rouhla

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct {
        int code_etudiant;
        char nom[15];
        char prenom[15];
        float moy_annee;
        char mention[9];
    } etudiant;
     
     
    int main(int argc, char *argv[])
    {
        etudiant e;
        FILE *f; /*f est un nom logique*/ /* commentaire tres special */
        char buffer[1024];
     
        f=fopen("c:/fiche_eleve","wb+");
     
        if(f==NULL){
            printf("creation non faite");
            exit(EXIT_FAILURE); /* si la creation n'est pas faites on sort du programme on ne continu pas */
        }
     
        /*fwrite(&e,sizeof(e),1,f);*/ /* pourquoi un fwrite alors que ya rien dans ton etudiant */
        printf("entrer le code nom prenom et la moyanne generale:\n");
        /*scanf("%d %s %s %f",&e.code_etudiant,&e.nom,&e.prenom,&e.moy_annee);  */ /*  Nop */
        memset(buffer, 0, sizeof buffer);
        fgets(buffer, sizeof buffer, stdin);
     
        if(buffer == NULL) exit(EXIT_FAILURE);
        if(sscanf(buffer, "%d %s %s %f", &e.code_etudiant, e.nom, e.prenom, &e.moy_annee) != 4)
            exit(EXIT_FAILURE); /* a remplacer par un message d'erreur et une boucle pour pouvoir resaisir */                                                                
        /*fread(&e,sizeof(e),1,f);*/ /* pourquoi fread ??? */
     
        fwrite(&e, sizeof(e), 1, f);
     
        printf("le code=%d nom %s prenom %s moyenne %f",e.code_etudiant,e.nom,e.prenom,e.moy_annee); 
        fclose(f);
        system("PAUSE");	
        return 0;
    }

  5. #5
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut Re: probleme fichier en c
    Voila un petit code correct, qui n'est pas profesionnelle et qui fera la tache :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct {
                     int code_etudiant;
                     char nom[15];
                     char prenom[15];
                     float moy_annee;
                     char mention[9];
                    } etudiant;
     
    int main(int argc, char **argv)
    {
        etudiant e ;
     
        FILE *f;  
        f=fopen("eleve.dat","wb+");
        if(f==NULL)
        {
                  printf("creation non faite");
                  return EXIT_FAILURE;
        }
     
        else */ Non nécessaire mais personnellement  j'aime la faire */
        {
            printf("Entrer le code nom prenom et la moyanne generale:\n");
            scanf("%d %s %s %f " , &e.code_etudiant , &e.nom , &e.prenom , &e.moy_annee);
            /* Pas de controle de saisie peux causé du comportement indéfini donc n'est pas recommander */
     
            fprintf(f,"%4d %20s %20s %20.2f " , e.code_etudiant , e.nom , e.prenom , e.moy_annee);
            /*
              Verifie ton fichier eleve.dat dans le repertoire de compilation.
              Il doit comporter les informations que vous avez tapez si vous n'avez
              pas fait des erreurs de la saisie.
            */
     
            fclose(f);
            system("PAUSE");	
            return EXIT_SUCCESS;
         }
    }

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: probleme fichier en c
    Citation Envoyé par ccensam
    Voila un petit code correct,
    Tu aurais dû le compiler avant de le poster... 2 typos...
    Une fois corrigées, il reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.c:28: warning: char format, different type arg (arg 3)
    main.c:28: warning: char format, different type arg (arg 4)
    Pourtant, dans ce thread, on a insisté sur le fait qu'avec scanf(), "%s" attendait l'adresse du premier élément du tableau de char et non l'adresse du tableau.

    Tant que c'est un tableau, ça ne fait pas de différence (mauvais type, mais même valeur). Le jour où c'est un pointeur, c'est la catastrophe.

  7. #7
    Membre habitué Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 162
    Points
    162
    Par défaut dommage
    En effet je suis dans un cyber café et j'ai pas un compilateur.
    Désolé!!!!!

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: dommage
    Citation Envoyé par ccensam
    En effet je suis dans un cyber café et j'ai pas un compilateur.
    http://www.comeaucomputing.com/tryitout/

Discussions similaires

  1. Mailing probleme fichier joint
    Par Brice1981 dans le forum Access
    Réponses: 1
    Dernier message: 24/08/2006, 18h17
  2. [Hibernate]probleme fichier de configuration xml
    Par scoryo dans le forum Hibernate
    Réponses: 4
    Dernier message: 07/06/2006, 18h42
  3. [VB] Probleme fichier perimé
    Par fehmitn dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/02/2006, 09h48
  4. [Fichier] Problème fichier texte
    Par ben127 dans le forum Langage
    Réponses: 3
    Dernier message: 03/02/2006, 21h41
  5. Probleme Fichier OST outlook
    Par RA dans le forum Outlook Express / Windows Mail
    Réponses: 6
    Dernier message: 25/11/2005, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo