Существует способ добавить строки любой длины в исходную строку, используя realloc .Вам не нужно знать окончательную длину строки здесь.
Я предполагаю, что вы можете безопасно изменить объявление / инициализацию переданного аргумента string
в вызывающей функции следующим образом:
char * string = calloc( 0, sizeof(char) );
Замените 0 на тот размер, который изначально имеет строка, плюс 1 для завершающего NULL.
Измените свою функцию на:
char * my_function(int n, char *string){
if (n < 20) {
return string;
}
else
{
char *new_string = "abcdefghijklmnop";
if( (temp = realloc(string, strlen(new_string)+ strlen(string) + 1)) == NULL )
{
printf("Memory allocation error");
exit(1);
}
strcat(string, new_string);
return my_function(n--, string);
}
}