Copie char *argv[] dans char *tab[]
Bonsoir à tous !
Voila, je rencontre un petit problème.
Je souhaite copié le tableau (char *argv[]) dans un autre tableau.
J'ai fait donc comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| int i = 0;
char *tab = NULL;
tab = malloc(argc * sizeof(char*)); /* On alloue le tableau */
if(tab == NULL) /* On vérifie s'il n'est pas NULL */
exit(1);
/* On copie dans le tableau */
for(i = 0; i < argc; i++)
tab[i] = argv[i];
printf("%s\n", tab[0]); /* Le programme plante à cette endroit */
/* Libération de la mémoire */
free(tab);
tab = NULL; /* On met le pointeur à NULL */ |
Par contre, je ne souhaite pas utiliser la fonction memcpy() pour copier mon tableau.
Et, lorsque j'affiche une case du tableau (tab[0]), mon programme plante.
J'avoue ne pas comprendre pourquoi.
J'ai fait un autre code pour copier un autre tableau.
Voila ce code :
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
| int i = 0;
char *tab[] = NULL;
char *tab2[] = NULL;
/* Allocation dynamique des tableaux */
tab = malloc(argc * sizeof(char*));
tab2 = malloc(argc *sizeof(char *));
if(tab == NULL || tab2 == NULL) /* Vérification */
exit(1);
/* On ajoute dans le tableau les valeur Hello */
for(i = 0; i < argc; i++)
tab[i] = "Hello";
/* On affiche les valeurs du tab[] */
for(i = 0; i < argc; i++)
printf("Tab : %s\n", tab[i]); /* Mon programme plante */
/* On copie le tab[] dans tab2[] */
for(i = 0; i < argc; i++)
tab2[i] = tab[i];
/* On affiche les valeurs de tab2[] */
for(i = 0; i < argc; i++)
printf("Tab2 : %c\n", tab2[i]);
/* Libération de la mémoire */
free(tab);
free(tab2);
/* On met les pointeurs à NULL */
tab = NULL;
tab2 = NULL; |
Est-ce possible de copier un tableau de chaine de caractère ? Je me suis poser la question, s'il fallait copier aussi chaque caractère dans la case du tableau correspondant ?
Je vous remercie d'avance de votre aide :)
Cordialement,
vegnagun