Bonjour,
Comment faire pour copier un tableau de pointeurs char vers un autre tableau de pointeur char
Si j'ai:
char *tb1[10] = {NULL}
char *tb2[10] = {NULL}
tb1 est déjà rempli, je connais le nombre d'élément de tb1, le contenu de tb1 s'affiche bien.
le memove ne fonctionne pas, ca plante, et fait boucler l'ESP32
Le code suivant ne fonctionne pas aussi
for (int i = 0; i < nbEle; i++)
strcpy(tb2[i], tb1[i]);
Merci de votre aide.
Problème résolu.
Je n'avais pas allouer de l'espace sur tb2.
j'ai donc alloué chaque élément avant de faire strcpy, avec un malloc.
for (int i = 0; i < 10; i++){ //Init array argument (argv)
if(tb2[i]) { free(tb2[i]); tb2[i] = NULL; }
}
for (int i = 0; i < 10; i++) {
tb2[i] = (char *) malloc(numChars * sizeof(char));
if(tb2[i] == NULL) {
return;
}
strcpy(tb2[i], tb1[i]);
}
malloc(), mais il faut penser à free() si nécessaire.
ou alors :
char tb2[10][numChars];
Pour faire une duplication Il y a également strdup(), qui est équivalent à :
tb2[i] = malloc(strlen(tb1[i])+1);
strcpy(tb2[i], tb1[i]);
J-M-L
4
strcpy() va s'arrêter au premier caractère nul rencontré. le reste du tableau ne sera pas copié.
➜ utiliser memcpy() va copier tout le tableau
attention ça ne va pas copier (dupliquer) les chaines pointées, ça duplique juste les pointeurs qui pointeront au même endroit
system
Closed
5
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.