Bonjour,

J'avais à réaliser un projet en c et je suis resté bloqué sur un problème auquel personne ne m'a répondu. Ayant déjà rendu le projet je me permet de poser la question ici.

j'avais trois structures :
la struture pain qui contenait la structure pile et la structure sortie qui contenait elle meme la structure number.
Mon problème apparaissait à l'initialisation.

voici mes structures détaillé :

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
typedef struct s_number
{
  int	digit;
  struct s_number *next;
  struct s_number *prev;
}	t_number;
 
typedef struct s_nbr_stack
{
  struct s_number *number;
  struct s_nbr_stack *next;
  struct s_nbr_stack *prev;
}	t_nbr_stack;
 
typedef struct s_op_stack
{
  int	operator;
  struct s_op_stack *next;
  struct s_op_stack *prev;
}	t_op_stack;
 
typedef struct s_pain
{
  t_nbr_stack	*sortie;
  t_number	*number;
  t_op_stack	*pile;
}	t_pain;
et voici le début de mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 t_pain	*pain;
 
  pain = malloc(sizeof(t_pain));
  pain->sortie = malloc(sizeof(t_nbr_stack));
  pain->sortie->number = malloc(sizeof(t_number));
  pain->pile = malloc(sizeof(t_op_stack));
  pain->pile = NULL;
  pain->sortie->number = NULL;
  pain->sortie = NULL;
  pain = NULL;
premièrement il me faisait toujours un segfault si j'essayait d'initialiser un élément supérieur avant un élément inférieur (ex : pain avant pain->sortie). Je ne comprend pas pourquoi.
deuxièmement avec le code ci dessus pas moyen de lui parler d'autre chose que de pain (ex : if(pain->sortie == NULL)) me donne un segfault mais pas avec if(pain == NULL) ce qui ne m'arrange pas du tout.
Quoiqu'il en soit je pense que mon deuxième problème vient du premier.

Merci d'avance