Bonjour,
J'ai crée une fonction qui devrai retourner le contenu d'un .txt dans un char**.
Le soucis que je rencontre c'est que ma fonction retourne un char** avec comme valeur la dernière ligne du fichier .txt pour chaque "cellule" alors que chaque "cellule" devraient retourner une ligne différente. Autrement dis, à chaque fois que le char** reçoit un nouveau char* (une ligne du fichier .txt), il écrase tout les char* précédent avec la valeur en cour.
Il doit surement il y avoir un aspect dans l'utilisation des char** que j'ai mal compris. Pourriez vous m'aider.
Voici ma fonction, elle affiche chaque ligne une fois stockées dans le char** puis affiche son contenu une fois que tout le texte à été parcouru, les saisies se font a la ligne 24 et 30. Mon erreur se trouve surement ici
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
47
48 char** fOption() { char* elementsToFind[512] ; char* values_include = "c:\\test2.txt"; FILE *fp; fp = fopen(values_include, "r"); if( fp == NULL ) { printf("f, unable to open the file : %s\n",values_include); exit (0); } else { int numLine = 1; char temp [512]= ""; while(fgets(temp, 512, fp)) { if(strrchr(temp,'\n')) //all lines except the last one { temp[strlen(temp)-1] = '\0'; elementsToFind[numLine-1] = temp; printf("TEST %d : %s\n",numLine,elementsToFind[numLine-1]); numLine ++; } else //last line { elementsToFind[numLine-1] = temp; printf("TEST %d : %s\n",numLine,elementsToFind[numLine-1]); elementsToFind[numLine] = NULL; } } } fclose(fp); int iterator = 0; printf("------\ncharr** Final : \n"); while(elementsToFind[iterator] != NULL) { printf("==>%s\n",elementsToFind[iterator]); iterator++; } char** tempElementsToFind = elementsToFind; return tempElementsToFind; }
Partager