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 :

Mettre le contenu d'un fichier dans un tableau


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Mettre le contenu d'un fichier dans un tableau
    Bonjour, je dois dans ce programme récupérer les données d'un fichier txt et les mettre dans un tableau :

    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
    int chargement(T_pers pers[],int nbP,T_compte comp[],int nbC,T_trans trans[],int nbT){
     
        FILE *fp;
     
        fp = fopen("client.txt","r");
     
        nbP=0;
     
      /* Chargement des personnes */
      if(fp == NULL){
        printf("Impossible d'ouvrir le fichier personnes \n");
      }else{
        printf("Ouverture du fichier personnes \n");
        while(fscanf(fp,"%s_%s_%s_%hd_%hd \n%*c",pers[nbP].nom,pers[nbP].prenom, pers[nbP].adresse, pers[nbP].numAgence, pers[nbP].numCompte)==5){
     
          nbP++;
        }
        printf("Chargement du fichier personnes termine. \n\n");
      }
    L'ennuie c'est qu'avec ce code je n'écrit pas dans mon tableau, et je n'arrive pas a trouver une solution, quelqu'un en aurait-il une?
    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Auzingueur Voir le message

    L'ennuie c'est qu'avec ce code je n'écrit pas dans mon tableau, et je n'arrive pas a trouver une solution, quelqu'un en aurait-il une?
    Merci
    En faite j'écris seulement le nom de la personne en question avec ce code.

  3. #3
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Bonjour
    Entant donné le peu d'informations, je dirais que c'est parce que tu envoies des tableaux à scanf par copie. C'est à dire que par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char buffer[100];
    scanf("%s", &buffer);
    Ici, tu envoies l'adresse de buffer pour qu'elle puisse etre modifié.
    Si ceci ne resou pas ton problème, il faudrais nous montrer :

    Les structures,
    Le template du fichier
    Comment tu tests ton affichage
    etc ...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    En faite, mon séparateur dans le .txt est l'espace, et ici j'ai %s_%s_%s_%hd_%hd
    C'est pour sa que je n'ai que la 1ere chaine de caractères, l'ennuie c'est que quand je met des espaces, mon programme plante...

  5. #5
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Au risque de me repeter, peux tous nous montrer tes structures etc?
    Et a tu fais appelle à un debuger?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    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
    /* définition des structures */
    typedef struct personne{
      char nom[40];
      char prenom[40];
      char adresse[60];
      short numAgence;
      short numCompte;
    } T_pers;
     
    typedef struct compte{
      short numCompte;
      short numAgence;
      float solde;
    } T_compte;
     
    typedef struct transaction{
      char nomDebit[40];
      char prenomDebit[40];
      char nomCredit[40];
      char prenomCredit[40];
      float montant;
    } T_trans;
     
     
      T_pers personnes [NBCOMPTE];
      T_compte comptes [NBCOMPTE];
      T_trans transcations [NBTRANSACTION];
    Voici mes structures, et pour ce qui est de mon fichier texte il est du style :

    Mansoif Gerard 51,_rue_de_la_pompe,64600_Anglet 64 368

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Bonjour,
    Citation Envoyé par EpiTouille Voir le message
    Entant donné le peu d'informations, je dirais que c'est parce que tu envoies des tableaux à scanf par copie.


    Les tableaux ne sont jamais passé par copie, les tableaux sont implicitement convertis en un pointeur sur le premier élément et c'est ce pointeur qui est passé par copie.

    Le bon code serait alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char buffer[100];
    scanf("%s", &buffer);
    A noter que pour éviter d'écrire plus de 99 caractères dans le buffer, on peut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%99s", buffer);//à revérifier quand même
    cf http://man.developpez.com/man3/scanf/

    En faite, mon séparateur dans le .txt est l'espace, et ici j'ai %s_%s_%s_%hd_%hd
    C'est pour sa que je n'ai que la 1ere chaine de caractères, l'ennuie c'est que quand je met des espaces, mon programme plante...
    Si ton séparateur dans ton texte est l'espace, alors il faut mettre un espace dans ton scanf. Si ton programme plante, il faut rechercher à savoir pourquoi il plante plutôt que de modifier ton code jusqu'à ce qu'il semble "marcher".

  8. #8
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Oui, j'ai réalisé trop tard mon erreur, merci de ne pas prendre en compte mon dernier message.

    Pour en revenir au problème, si c'est un bug mémoire, je te conseille d'utiliser un outils comme valgrind qui te permettra de trouver et comprendre ton erreur.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/11/2012, 01h34
  2. Réponses: 3
    Dernier message: 28/05/2009, 15h27
  3. [Stream] Mettre le contenu d'un File dans un tableau de byte
    Par JohnBlatt dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 25/08/2006, 14h18
  4. Réponses: 4
    Dernier message: 26/01/2006, 14h37
  5. Réponses: 14
    Dernier message: 19/11/2005, 18h56

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