Bonjour,
Alors je vais essayer d'énoncer mon problème le plus clairement possible avec le minimum de code (pour l'instant):
J'ai fait un ensemble de fonctions qui gèrent une liste chaînée. Voici les structures utilisées:
1 2 3 4 5 6 7 8 9 10 11 12 13 | typedef struct s_list { size_t size; struct s_llnode *first; struct s_llnode *last; } t_llist; typedef struct s_llnode { void *val; size_t val_size; struct s_llnode *next; } t_llnode |
J'ai une fonction array_to_list qui prend un tableau et renvoie la ll correspondante :
t_llist *array_to_list(void *array, size_t size, size_t val_size);
Chaque valeur des maillons est créé par copie avec memcpy(new->val, val, val_size);
Si je créer un tableau de char ou d'int et que je le passe, je trouve bien un tableau contenant les adresses des chars ou des ints.
Maintenant si je créer un tableau de chaînes de caractères, je retrouve n'importe quoi en sortie. En fait en affichant le premier élément ((char *)(list->first->val)
) le premier caractère est correct, mais la suite c'est n'importe quoi. Est-ce que vous pouvez m'aider à trouver d'où vient le problème ?