La ligne 5 n'est pas correcte. Tu alloues strlen()+1 fois la taille d'un pointeur, alors que tu devrais allouer strlen()+1 fois la taille d'un élément.
strdup() est maintenant une fonction standard C (elle était dans POSIX depuis longtemps), qui alloue une chaine contenant une copie de celle qu'on lui donne en paramètre.
La vie est trop courte pour s'emmerder avec malloc+strlen(+1)+strcpy.
PS: sizeof(**tableau) vaut 1, qui est plus court à taper.
Ici **tableau est un octet (char), il n'y a aucune raison que ça change un jour parce les fonctions strxxx manipulent des octets, et sizeof(char) est par définition égal à 1. Arrêtez de vous compliquer la vie.
- Edité par michelbillaud 20 novembre 2019 à 14:13:56
Ici **tableau est un octet (char), il n'y a aucune raison que ça change un jour parce les fonctions strxxx manipulent des octets, et sizeof(char) est par définition égal à 1. Arrêtez de vous compliquer la vie.
D'accord, mais si tableau est du type int **tableau (ou float, double, struct), sizeof est le bienvenu
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Mais ici, la réalité c'est que c'est un tableau de pointeurs vers des chaînes, et sizeof(**tableau), c'est une manière inutilement compliquée de dire 1.
Quand tu relis ce code, il faut un certain temps pour décoder et voir que ça fait 1, et un peu plus à se demander pourquoi il était vraiment nécessaire d'écrire sizeof (**tableau) et pas 1, et la conclusion c'est que ce n'etait pas necessaire, le type qui a écrit ça a simplement l'esprit tordu et fait perdre son temps aux autres.
Le truc qui fout de bonne humeur pour la journée .
- Edité par michelbillaud 20 novembre 2019 à 22:17:23
Allocation dynamique d'un tableau de pointeurs
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent