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 :
Par contre, je ne souhaite pas utiliser la fonction memcpy() pour copier mon tableau.
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 */
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 :
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 ?
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;
Je vous remercie d'avance de votre aide
Cordialement,
vegnagun
Partager