Bonjour à tous,
voiçi mon problème :
Je réalise un projet informatique pour mes études et je suis coincé par un problème dont je n'arrive pas à me découdre, je vous explique :

il s'agit pour l'instant de créer une liste contenant tous les k-segments d'un mot.

j'ai la structure de données suivante pour ma liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct listeSegment 
{
	char * segment;
	ListeMot * listeMot;
	struct listeSegment * segmentSuivant;
}ListeSegment;
j'ai ensuite ma fameuse fonction pour construire cette liste :
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
ListeSegment * constructListeSegment(int k,char * query)
{
	ListeSegment * listeSegment = new ListeSegment;
	ListeSegment * ptrTeteListe = listeSegment;
	listeSegment->segmentSuivant = NULL;
 
	int longueur = strlen(query);
	char * ksegment = new char[longueur];
	int j;
 
	for(int i = 0;i < longueur - (k-1);i ++)
	{
		j = 0;
 
		for(int l = i;l < i+k;l ++)
		{
			ksegment[j] = query[l];
			j ++;
		}
		ksegment[j] = '\0';
 
                //on gère le cas où on aurait des doublets
		if(!estDansListe(ptrTeteListe,ksegment) || i == 0)
		{
			listeSegment->segment = ksegment;
			listeSegment->segmentSuivant = new ListeSegment;
			listeSegment = listeSegment->segmentSuivant;
			listeSegment->segmentSuivant = NULL;
		}
	}
	return ptrTeteListe;
}
avec la fonction qui vérifie que le segment n'est pas déjà dans la liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
bool estDansListe(ListeSegment * liste,char * mot)
{
	ListeSegment * parcoursListe = liste;
 
	while(parcoursListe != NULL)
	{
		if(parcoursListe->segment == mot)
			return true;
		parcoursListe = parcoursListe->segmentSuivant;
	}
	return false;
}

à mon grand étonnement, ça n'a pas marché.
J'ai pu constater un souci vraiment bizarre en essayant de débugger avec des affichage dans la console :
Si je rajoute un printf dans la boucle for qui crée mon segment ksegment comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
for(int l = i;l < i+k;l ++)
{
	if(i > 0)
		printf("ptrTeteListe [%d] [%d] : %s\n",j,i,ptrTeteListe->segment);
	ksegment[j] = query[l];
	j ++;
}
je remarque que le segment de ptrTeteListe change à chaque passage dans la boucle alors que je ne lui ai rien demandé...

Je vous remercie par avance de vos réponses et du temps que vous aurez consacré à mon problème.