nie, no bez jaj... Funkcja, która się nazywa 'strcat' nie może alokować pamięci. To byloby chore. Jak byś potem zwalniał tą pamięć? Wołając "strcat_release_memory"?
Gośc - najlepiej po prostu zrób to standardowo, tak jak to robią funkcje w nowszych funkcjach biblioteki standardowej - w tych, w których twórcy poszli po rozum do głowy. Czyli:
char * f_strcat( char * outString , size_t Size, char * SecondString )
{
char * connected = NULL;
if(outString != NULL && SecondString != NULL)
{
connected = outString;
// Zamiast while'a mozna jeszcze for'ow uzyc - powinno byc szybsze,
// bo bedzie wtedy tylko jedna inkrementacja,
// ale uswiadomilem sobie to w trakcie pisania i nie chce mi sie tego poprawiac
// no i Ci sie przyda tez pocwiczenie :P
while((*outString) && Size > 0)
{
outString++;
Size--;
}
while((*SecondString) && Size > 0)
{
*outString = *SecondString;
outString++;
SecondString++;
Size--;
}
}
return connected;
}
Edit:
PS. Tutaj masz przykladowe wykorzystanie:
void main( void )
{
char first[100];
char second[100];
strcpy(first, "Lol, raz, dwa, trzy.. ");
strcpy(second, "proba mikrofonu");
f_strcat( first, sizeof(first), second);
}