Я довольно новичок в C, поэтому прошу прощения, если это довольно стандартное знание ..
У меня есть такая функция, где я добавляю кучу строк в стиле C и выводю ее:
char *example(int n, int days, int years){
char *ret;
if (n < 5) {
ret = (char*)malloc(sizeof(char)*256);
sprintf(ret, "There are %d days in %d years", days, years);
ret = (char*)malloc(strlen(ret));
return ret;
}
else {
char *s1;
char *s2;
char *s3;
s1 = example(n/2, days, years);
s2 = example(n + 5, days, years);
s3 = example(n--, days, years);
int length = strlen(s1) + strlen(s2) + strlen(s3);
ret = (char*)malloc(length);
strcat(ret, s1);
strcat(ret, s2);
strcat(ret, s3);
return ret;
}
}
Это префикс каждой новой конкатенации с несколькими символами мусора. Я предполагаю, что моя проблема в моем управлении памятью, но я не уверен .. Это просто? Что я сделал не так? Кроме того, как это можно сделать чище?