Il faudrait la définition de t_listoperandes pour savoir ce qu'est exactement le champ data. D'apres
1 2 3
| t_listoperandes *begin;
....
begin->data = 0; |
il semble que ce soit un pointeur. dans ce cas, il n'y a pas de place pour copier data, donc ceci plante (cf le post de Faiche):
1 2 3
| t_listoperandes *temp;
temp = xmalloc(sizeof(*temp));
strcpy(temp->data,data); |
Dans my_operandes_in_list
1 2
| char *res;
res = xmalloc(sizeof(*res)); |
ne permet de placer qu'un seul caractère (cf mon post précédent). Il est même étrange que ca ne plante pas à ce niveau avec la boucle sur a
De plus , les tests sont bizarres :
if (str[i] != 42 || str[i] != 43 || str[i] != 45 || str[i] != 47)
si str[i] != 42 il répond true
si str[i] == 42 donc différent de 43, il répond true
-> il répond true toujours. Il s'agit probablement de && pas ||
Partager