Essaye de toutes les afficher à chaque itération...
Le truc c'est que tu avance ton pointeur d'une seule "case" à la fois, donc getline écrase tout ce qui se trouve à la suite de cette case... Aussi, tu lui passe un pointeur "invalide" dans le sens qu'il est illegal pour appeller realloc (ce que getline fait forcément vu que itemLen=0*) car ce n'est plus l'addresse retournée par malloc -> bug (cf. man realloc). Bref t'essaye de mettre dans la zone pointée par ton char** en même temp et un tableau de pointeur et des strings... Contente toi de passer un null à getline, il va t'allouer ta ligne tout seul ensuite t'as plus qu'à ajouter le pointeur à ton tableau comme tu le fais (il me semble) correctement.
newItem = NULL;
while ( getline(&newItem,0,fp) != -1) { ... ajout de newItem à items; newItem=NULL};
Aussi, again, lis les man page de chaque fonction que tu utilise !!! et ne code que lorsque tu es sûr d'avoir compris PARAMETERS et RETURN VALUES.
*:ensuite itemLen est mal utilisé vu que tu ne comptes pas le fait que tu avance le pointeur, pour rester cohérent, tu devrais réduire itemLen. Néanmoins, cela changera rien au fait que getline ne peut pas faire de realloc dessus -> tjrs un bug.
[^] # Re: Je suppose...
Posté par benja . En réponse au message getline et realloc sont dans une boucle. Évalué à 1.
Essaye de toutes les afficher à chaque itération...
Le truc c'est que tu avance ton pointeur d'une seule "case" à la fois, donc getline écrase tout ce qui se trouve à la suite de cette case... Aussi, tu lui passe un pointeur "invalide" dans le sens qu'il est illegal pour appeller realloc (ce que getline fait forcément vu que itemLen=0*) car ce n'est plus l'addresse retournée par malloc -> bug (cf. man realloc). Bref t'essaye de mettre dans la zone pointée par ton char** en même temp et un tableau de pointeur et des strings... Contente toi de passer un null à getline, il va t'allouer ta ligne tout seul ensuite t'as plus qu'à ajouter le pointeur à ton tableau comme tu le fais (il me semble) correctement.
newItem = NULL;
while ( getline(&newItem,0,fp) != -1) { ... ajout de newItem à items; newItem=NULL};
Aussi, again, lis les man page de chaque fonction que tu utilise !!! et ne code que lorsque tu es sûr d'avoir compris PARAMETERS et RETURN VALUES.
*:ensuite itemLen est mal utilisé vu que tu ne comptes pas le fait que tu avance le pointeur, pour rester cohérent, tu devrais réduire itemLen. Néanmoins, cela changera rien au fait que getline ne peut pas faire de realloc dessus -> tjrs un bug.