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;
 
}