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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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