#include #include #include char *strconcat(char *start_string, ...); int main(int argc, char **argv) { int a = 56; char coso[2]; sprintf(coso, "%d", a); printf("%s \n", strconcat("cacca ", coso, " altro") ); exit(0); } char * strconcat(char *start_string, ...){ int len; va_list args; char *str, *result; len = strlen( start_string ) + 1; va_start( args, start_string ); printf("-- %s \n", start_string); // DEBUG while( ( str = va_arg( args, char* ) ) ){ printf("[] %d \n", len); // DEBUG len += strlen( str ); } va_end( args ); result = malloc( sizeof( char ) * len ); strcpy( result, start_string ); va_start( args, start_string ); while( ( str = va_arg( args, char* ) ) ){ strcat( result, str ); printf("++ %s \n", str); // DEBUG printf("-- %s \n", result); // } va_end( args ); return result; } --------------------------------------------------------------------------- OUTPUT ----------------------------------------------------------------- Ram Disk:> gcc Projects:AlieM/prova.c -o prov Ram Disk:> prov -- cacca [] 7 [] 9 [] 15 [] 17 ++ 56 -- cacca 56 ++ altro -- cacca 56 altro ++ b -- cacca 56 altrob ++   -- cacca 56 altrob  cacca 56 altrob  Ram Disk:>