...et moi aussi. A part quand ils marchent pas. je m'explique.

Je fais appel à une sous-fonction nommée lireligne, qui lit les lignes d'un document qu'on lui passe en parametre (une ligne de début et une ligne de fin). Cette fonction renvoie un char * par ligne, donc un tableau de char *, donc un char **. Voici la fonction :
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
#include "biblio.h"
 
 
//cette fonction lit les lignes d'un fichier dont le chemin est passe en argument.
//elle renvoie un tableau de chaines de caracteres correspondant au contenu du document de la ligne debut jusqu'a la ligne fin
 
char ** lireligne(char* nomfichier, int lignedebut, int lignefin)
{
	int i;
	FILE * fichier;
	char * donnees[1+lignefin-lignedebut];
	char temp[512];
 
	fichier = fopen (nomfichier, "r");
 
 
	for (i = 1; i < lignedebut ; i++)
	{
		fgets(temp, sizeof(temp), fichier);
	}
 
	for (i = 0; i <= (lignefin-lignedebut) ; i++)
	{
		fgets(temp, sizeof(temp), fichier);
		donnees[i] = (char *)malloc(sizeof(char)*strlen(temp));
		strcpy(donnees[i], temp);
	}
 
	fclose(fichier);
	return donnees;
 
}
Cette fonction marche, vous pouvez me croire. Le problème c'est quand j'essaie de la récupérer dans un programe père :
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
#include "biblio.h"
 
void* parser(void *p)
{
	int i;
	printf("debut du parsing des fichiers GRE et FNR...\n");
 
	char ** donnees = NULL;
 
	donnees = lireligne("test.csv", 1, 6);
 
	for(i = 0; i < sizeof(donnees) ; i++)
	{
		printf(donnees[i]);
	}
	return NULL;
 
 
 
}
parce que bizarrement la valeur de données ne voudra jamais changer de 4... alors que sizeof(donnees) dans lireligne vaut 64 (pour cet exemple).

Pouvez-vous m'aider? Merci!