[ESP32]Copier un tableaux de pointeurs char dans un autre

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]);  

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

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.