Pour les listes chainees on m'a dit d'utiliser 0 et non NULL...
Ok ! j'avais bien vue que mon malloc était trop grand mais je comprenais pas pourquoi... Donc si je fais:
new->arg = malloc((my_strlen(av[y]) + 1) * (sizeof(*arg)));
Ca me ferra bien un malloc de type char* ?
Pour le '\0', quel boulet.... C'est le genre d'erreur d'inattention que je détecte pas avant d'avoir lâcher un peu mon code, merci pour le gain de temps !
Quelques secondes plus tard...
Je segfault toujours au meme endroit, pourtant j'utilise strcpy et je suppose qu'il copie egalement le '\0' de la chaine.
Au cas ou, voici le nouveau code:
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
|
void my_print_list(t_list *params)
{
t_list *moove;
moove = params;
while (moove != 0)
{
my_putstr(moove->arg);
moove = moove->next;
}
}
void my_params_in_list(t_list **params, char **av)
{
int y;
t_list *new;
t_list *moove;
y = 0;
while (av[y])
{
new = malloc(sizeof(*new));
new->arg = malloc((my_strlen(av[y]) + 1) * (sizeof(new->arg)));
new->next = 0;
strcpy(new->arg, av[y]);
if (*params == 0)
*params = new;
else if (*params != 0)
{
moove = *params;
while (moove->next != 0)
moove = moove->next;
moove->next = new;
}
y++;
my_putstr(new->arg); /*ici ca me print les arguments comme il faut*/
my_putstr("\n");
}
}
int main(int ac, char **av)
{
t_list *params;
params = malloc(sizeof(*params));
my_params_in_list(¶ms, av);
my_print_list(params);
} |
Partager