Bonjour à tous !
Dans le cadre d'un projet de codage/décodage, je dois réaliser une fonction (que j'ai appelée ajout_debut) qui me permette d'ajouter un caractère donné d'une chaîne au début de chaînes d'un tableau de chaînes.
Cette fonction marche impec, sauf que si la taille de mes tableaux dépasse 16, c'est-à-dire qu'on aura 16 chaînes de 16 caractères (=256 caractères), elle fait n'importe quoi et m'affiche n'importe quoi, souvent seulement 1 caractère par chaîne au lieu de 16.
J'ai du mal à comprendre ce quota, est-il dû à un blocage quelconque ?
Merci d'avance !
Voici mon 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 /* Fonction dep Argument : une chaîne de caractères code résultat : d, une chaîne équivalente à code mais décalée vers la droite et avec un espace comme premier caractère (donc plus longue d'un caractère) */ char * dep (char * code) { char * d = (char *) malloc ((strlen(code)+1)*sizeof(char)); // on fait strlen(code)+1 car on décale tout vers la droite int i; for (i=0;i<=strlen(code);i++) { d[i+1]=code[i]; } d[0]=' '; // on met un espace en premier return d; } /* Fonction ajout_debut Arguments : une chaîne de caractères code, un tableau de chaînes de caractères tab, un entier nb longueur de la chaine code Résultat : un tableau de chaînes de caractères newtab qui correspond à tab mais avec le j-eme caractère de code rajouté en premier caractère de tab et les autres caractères décalés vers la droite */ char ** ajout_debut (char * code, char ** tab, int nb) { char ** newtab = (char **) malloc ((nb+1)*sizeof(char *)); // +1 pour le \0 int i,j; for (i=0;i<nb;i++) { newtab[i]=dep(tab[i]); // on déplace tout vers la droite } for (j=0;j<nb;j++) { newtab[j][0]=code[j]; // et on remplace le premier caractère (un espace) par le j-eme caractère de code newtab[j][nb]='\0'; // on met à la fin le caractère de fin de chaîne } return newtab; }
Partager