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 :
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.
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; }
Plus exactement, j'obtiens le résultat suivant :
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é.
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
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
Partager