bonsoir,
Je me suis fait un code qui permet de concatener des chaine de caracteres.
Voici le 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 char *str_concat(char *cs, ...) { va_list va; const char *ct; char *s; size_t size; size = 1; s = NULL; va_start(va, cs); while ((ct = va_arg(va, char *)) != NULL) size += strlen(ct); s = (char *) calloc(size * sizeof(char), sizeof(char)); if (s == NULL) { printf("in str_concat : malloc() failed.\n"); fflush(stdout); } else { va_start(va, cs); strcpy(s, cs); while ((ct = va_arg(va, char *)) != NULL) strcat(s, ct); } return s; }
lorsque je l utilise je fais par exemple :
list_t est une liste de chaine de caracteres.
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 void init_dir(char *rep_dir_path, list_t l) { int path_len; char *path; path_len = strlen(rep_dir_path); mkdir(rep_dir_path, S_IRWXU); path = str_concat(rep_dir_path, "/Divers", NULL); mkdir(path, S_IRWXU); while (fdt_list != NULL) { path = str_concat(rep_dir_path, "/", l->name, NULL); mkdir(path, S_IRWXU); l = l->next; free(path); } }
Ca me fait
Je ne comprend pas pourquoi .... Meme sans le free cela me fait une erreure qui est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 *** glibc detected *** free(): invalid next size (fast): 0x08053298 *** Aborted
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 *** glibc detected *** malloc(): memory corruption: 0x08052cc8 *** Aborted
Merci
Partager