Bonjour, voila mon soucis, je voudrais concatener une chaine à d’autre de manniere dynamique :
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 | #include <stdio.h> #include <string.h> #include <stdlib.h> char* concat () { char src[50], *dest; dest = malloc(10 * sizeof(char)); strcpy(src, "data"); int i =0,j; int nbgen=rand()%20+10; for (i=0,j=0; i<=nbgen; i++) { strcat(dest+j, src); strcat(dest, ","); j = strlen(dest); } dest[j]= '\0'; return dest ; } int main () { char * ret = NULL; concat(); printf("Final destination string : %s \n", ret = concat()); free(ret); return 0; } |
J’ai actuellement une erreur Memory map car l’allocation que j’ai faite est trop petite, et c’est justement ma question, comme allouer ma ma variable *dest dynamiquement ?
actuellement la solution de contournement que j’ai trouvé d’allouer le tableau *10000
1 | dest = malloc(1000 * sizeof(char)); |
j’aimerais un truc plus propre. on part du princique que l’on ne connais pas la valeur int nbgen, qui peut varier de 1 à + l’infini.
+0
-0