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 .