Bonjour.
J'ai un soucis avec un bout de code.
Je définis un pointeur vers une structure s que j'appelle p_s.
Ensuite je définis 3 opérations:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
initialiser_p_s qui initialise ma liste d'éléments de type s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ajouter_p_s qui ajoute un élément de type s à la liste p_s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
afficher_p_s qui affiche  les éléments de p_s
j'utilise les tableaux dynamiques pour stocker ma liste d'éléments de type s.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
typedef struct s
{
int nombre;
element elt;
}s
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
p_s initialiser_p_s()
{
p_s l = (p_s)malloc(sizeof(s));
if(l!= NULL)
	{
		l->nombre = 0;
		l->elt = NULL;
	}
	else
	{
		printf("initialisation impossible");
	}
	return l;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
p_s ajouter_p_s(p_s l, s e)
{
l = (p_s)realloc(l, (l->nombre + 1)*sizeof(s));
	if(l != NULL)
	{
		l[l->nombre] = e;
		l->nombre++;
	}
	else
	{
		printf("ajout impossible \n");
	}
	return l;
}
et enfin
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
 
void afficher_p_s(p_s l)
{
int i;
	if(l->nombre == 0)
	{
		printf("Vide");
	}
	else
	{
		for(i=0; i < (l->nombre); i++) 
		{
			//affiche_s(l[i]);
			printf("ceci est une ligne");
			printf("\n");
		}
	}
}
Pour tester, je fais juste deux ajouts, et ma fonction
afficher_p_s
me renvoie une infinité de
ceci est une ligne
.
J'ai afficher la valeur de
l->nombre
, et j'obtiens un chiffre de l'ordre de 19832112.
Je ne vois vraiment pas où je perd mon pointeur.

Merci d'avance.