Bonjour à tous !
Comme j'ai tenté de préciser dans l'intitulé du Topic, je souhaite créer une fonction qui copie le i-ème caractère d'un mot entré en paramètre pour le placer dans un tableau de chaînes de caractères (pas de caractères car il va grandir par après).
Mon code est le suivant :
Si j'ajoute un printf("%s\n", tab[i]) après le code = ... dans la boucle for, il m'affiche bien chaque lettre.
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 char * permut (char * t) { int i; char * tmp = (char *) malloc ((strlen(t))*sizeof(char)); for (i=0;i<strlen(t)-1;i++) { tmp[i]=t[i+1]; } tmp[strlen(t)-1]=t[0]; return tmp; } char ** separe (char * code, int nb) { char ** tab = (char **) malloc (nb*sizeof(char *)); int i; char * c = (char *) malloc (nb*sizeof(char)); for (i=0;i<nb;i++) { c = strncpy(c,code,1); tab[i]=c; code = permut(code); } return tab; }
Seulement, si je fais un printf des tab[i] plus loin dans le main, je constate que les tab[i] sont tous égaux à la dernière lettre du char * code et je ne comprends pas pourquoi.
J'ai aussi essayé de remplacer tab[i]=c par un strcpy et sans la fonction permut mais j'aboutis à une segmentation fault.
Merci de votre aide
Partager