Bonjour,

Je vous explique le contexte : je souhaite récupérer des informations dans un fichier, et les enregistrer dans un tableau 2D. Chaque ligne de mon fichier est constituée de 3 informations, séparées les unes des autres par des tabulations.

J'ai donc écrit le code suivant :
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
char *** recupInfosFichier (char * nomFichier, int nbLignesRecup) {
    int i;
 
    // Allocation de la mémoire
    char *** tab = (char***) malloc (nbLignesRecup * sizeof(char**));
    for (i = 0; i < nbLignesRecup; i++) {
        tab[i] = (char**) malloc (3 * sizeof (char*));
    }
 
    // Ouverture et lecture du fichier
    FILE* fich = NULL;
    fich = fopen(nomFichier,"r");
 
    if (fich == NULL) {
        printf("Impossible d'ouvrir le fichier %s\n", nomFichier);
        return NULL;
    }
 
    char ligne[500] = "";
 
    i = 0;
    int j;
    char * str;
    while (i < nbLignesRecup && fgets(ligne,500,fich) != NULL) {
 
        for (j = 0, str = ligne; j < 3; j++, str = NULL) {
            tab[i][j] = strtok(str,"\t"); // Séparation des informations
            printf("i:%d j:%d %s\n",i,j, tab[i][j]);
        }
        i++;
    }
 
     printf("\nRESULTAT\n");
    for (i=0; i < nbLignesRecup; i++) {
        for (j=0; j < 3; j++) {
            printf("%s\n ", tab[i][j]);
        }
    }
 
    fclose(fich);
 
    return tab;
}
Mon problème est le suivant : lorsque je vérifie la valeur de mon tab[i][j] après le strtok, celui-ci contient bien l'information récupérée dans le fichier. Par contre, après la fin de la boucle while, lorsque je parcours de nouveau mon tableau, j'ai l'impression que les informations ont été "écrasées" et se chevauchent.
Plus exactement, j'obtiens le résultat suivant :
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
i:0 j:0 RMC
i:0 j:1 http://vipicecast.yacast.net/rmc
i:0 j:2 http://www.logotheque.fr/6396-2/logo+RMC+INFO.jpg
 
i:1 j:0 Radio FG
i:1 j:1 http://radiofg.impek.com/fg6.mp3
i:1 j:2 http://upload.wikimedia.org/wikipedia/commons/1/14/Ectac.FG-Dj-Radio-logo.03.jpeg
 
i:2 j:0 France Info
i:2 j:1 http://mp3.live.tv-radio.com/franceinfo/all/franceinfo.mp3
i:2 j:2 http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/France_Info.png/120px-France_Info.png
 
i:3 j:0 Nostalgie
i:3 j:1 http://mp3.live.tv-radio.com/nostalgie/all/nos_113812.mp3
i:3 j:2 http://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Nostalgie_logo_simple.png/120px-Nostalgie_logo_simple.png
 
 
RESULTAT
 
Nostalgie
 algie
 m/nostalgie/all/nos_113812.mp3
 Nostalgie
 
 talgie/all/nos_113812.mp3
 Nostalgie
 tp://mp3.live.tv-radio.com/nostalgie/all/nos_113812.mp3
 p://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Nostalgie_logo_simple.png/120px-Nostalgie_logo_simple.png
 
 Nostalgie
 http://mp3.live.tv-radio.com/nostalgie/all/nos_113812.mp3
 http://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/Nostalgie_logo_simple.png/120px-Nostalgie_logo_simple.png
J'ai essayé d'effectuer un malloc sur chaque tab[i][j] pensant que le problème venait de là, mais ça n'a rien changé.
Ayant quelques difficultés avec les problèmes de mémoire et pointeurs, je ne sais pas d'où cela peut venir...

Merci par avance pour votre aide