Bonjour.
J'ai déjà posté, mais je pense que je me suis mal exprimé, puisque j'ai pas eu de réponses.
J'ai donc amélioré ma question, et je fournit un exemple complet de mon problème.
J'ai un pointeur vers une structure. Je l'initialise, puis j'ajoute deux éléments de type la structure, et j'affiche ces deux éléments.
Après exécution, il affiche ajout impossible, et je n'arrive pas à voir où je perds mon pointeur.
D'avance merci...
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 // test_simple.cpp*: définit le point d'entrée pour l'application console. // #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct s { int nombre; char *elt; }s; typedef s *p_s; s initialiser_s(char *chaie) { s e; e.elt = chaie; return e; } 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; } 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; } 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"); } } } int main() { char *a = "unechainedecaractere"; char *b = "uneatrechainononnnn"; p_s p1 = initialiser_p_s(); s e1 = initialiser_s(a); s e2 = initialiser_s(b); p1 = ajouter_p_s(p1, e1); p1 = ajouter_p_s(p1, e2); //free(p1); return 0; }
Partager