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 decoupage avec strtok et tableau de structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut Probleme decoupage avec strtok et tableau de structure
    Bonjour tout le monde dans le cadre d'un projet je voudrais stocker un fichier csv dans un tableau de structures (original vous me direz ). Mon fichier est de la forme :
    int,string,string,int.
    Et un probleme se pose dans le stockage en effet le stockage des int ne pose aucun probleme : Si le 1er int du fichier est 2 => Tab[0].premierint me donneras effectivement 2. Mais pour les string il y a un probleme en effet que ce soit Tab[0].premierstring , Tab[1].premierstring ... Le resultat seras toujours le dernier des premierstring qui seras affiché (un exemple s'impose je pense
    1,jean,paul,2
    6,harry,potter,7
    Si je fais Tab[0].premierint il me renvoie 1 et Tab[1].premierint il me renvoie 6 mais si je fais Tab[0].premierstring j'aurais harry .... Pour ne pas perdre de temps je vais poster mon code...
    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
    45
    46
     
    typedef struct
    {
        int numero;
        char *nom;
        char *prenom;
        int position;
    }Concurrent;
     
    char *nomfichier;
    long taille=0;
    Concurrent *Table;
    FILE *fp;
     
    void FileToTable()
    //cette fonction prends les données du fichier
    {
        //calcul taille en lignes
        long i;
        char buffer[1025];
        char c;
        fp=fopen("test.txt","r");
        if(fp!=NULL)
        {
        while((c=fgetc(fp))!=EOF)
        if(c=='\n')
        {
            taille++;
        }
        }
        fseek(fp,0,SEEK_SET);
        //taille du Tableau = nombre de lignes du fichier txt :)
        Table=malloc(taille*sizeof(Concurrent));
        printf("%d",taille);
        for(i=0;i<=taille;i++)
        {
        fscanf(fp,"%s",buffer);
        printf("%s\n",buffer);
        Table[i].numero=atoi(strtok(buffer,","));
        Table[i].nom=strtok(NULL,",");
        Table[i].prenom=strtok(NULL,",");
        Table[i].position=atoi(strtok(NULL,","));
        }
        fclose(fp);
        printf("%s",Table[0].nom);
    }
    Oui je sais les variables globales c'est le mal mais ce probleme ne me permet pas deja de penser à l'optimisation puisque j'ai l'impression d'etre pire qu'un debutant . Je remercie d'avance les personnes qui pourrait me repondre .

    PS: En contraignant mes chaines de caracteres ou en utilisant strcpy j'obtiens le meme probleme .

  2. #2
    Expert éminent
    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
    Par défaut
    Citation Envoyé par MqKoL
    Pour ne pas perdre de temps je vais poster mon code...
    Supair...
    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
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:13: error: syntax error before '*' token
    main.c:13: warning: type defaults to `int' in declaration of `fp'
    main.c:13: warning: data definition has no type or storage class
    main.c:17: warning: function declaration isn't a prototype
    main.c: In function `FileToTable':
    main.c:22: warning: implicit declaration of function `fopen'
    main.c:22: warning: assignment makes pointer from integer without a cast
    main.c:23: error: `NULL' undeclared (first use in this function)
    main.c:23: error: (Each undeclared identifier is reported only once
    main.c:23: error: for each function it appears in.)
    main.c:25: warning: implicit declaration of function `fgetc'
    main.c:25: error: `EOF' undeclared (first use in this function)
    main.c:31: warning: implicit declaration of function `fseek'
    main.c:31: error: `SEEK_SET' undeclared (first use in this function)
    main.c:33: warning: implicit declaration of function `malloc'
    main.c:34: warning: implicit declaration of function `printf'
    main.c:34: warning: int format, long int arg (arg 2)
    main.c:37: warning: implicit declaration of function `fscanf'
    main.c:39: warning: implicit declaration of function `atoi'
    main.c:39: warning: implicit declaration of function `strtok'
    main.c:40: warning: assignment makes pointer from integer without a cast
    main.c:41: warning: assignment makes pointer from integer without a cast
    main.c:44: warning: implicit declaration of function `fclose'
    Process terminated with status 1 (0 minutes, 4 seconds)
    6 errors, 16 warnings
    Pour avoir la version qui compile, faut faire quoi ?
    • Montrer ses fesses ?
    • Voler une vieille ?
    • Tuer le chien ?

    On va encore dire que je suis méchant....

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Pour avoir la version qui compile, faut faire quoi ?
    • Montrer ses fesses ?
    • Voler une vieille ?
    • Tuer le chien ?

    On va encore dire que je suis méchant....
    On va dire que tu as oublié que tu as débuté un jour...
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Par défaut
    Bon j'ai trouvé une solution à mon probleme j'ai utilisé la fonction strdup() pour dupliquer ma chaine decoupé dans mon tableau car j'ai pu voir dans mes recherches que strtok renvoie une chaine variuable (il me semble ) donc mon erreur venait il me semble de la . Donc si des personnes ont ce probleme strdup() peut aider donc voila un petit resolu .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/12/2009, 17h18
  2. probleme de blanc dans un tableau avec les positionnements en css
    Par rich25200 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/02/2007, 23h50
  3. Réponses: 1
    Dernier message: 11/05/2006, 11h46
  4. [Tableau]Problèmes avec copie de tableau
    Par Itachi-san dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 17h23
  5. Probleme avec strtok
    Par Premium dans le forum C
    Réponses: 3
    Dernier message: 23/11/2005, 13h28

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