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_sj'utilise les tableaux dynamiques pour stocker ma liste d'éléments de type s.
Code : Sélectionner tout - Visualiser dans une fenêtre à part afficher_p_s qui affiche les éléments de p_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; }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 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; }
Pour tester, je fais juste deux ajouts, et ma 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 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"); } } }me renvoie une infinité deafficher_p_s.ceci est une ligne
J'ai afficher la valeur de, et j'obtiens un chiffre de l'ordre de 19832112.l->nombre
Je ne vois vraiment pas où je perd mon pointeur.
Merci d'avance.
Partager