Buenas, estoy teniendo un problema, me creé una función para concatenar cadenas en
C:
Código:
char* concat(const char* source1, const char* source2, char* buff)
{
char* str;
str = (char*)malloc(strlen(source1)*sizeof(char));
strcpy(str, source1);
buff = (char*)malloc((strlen(str)+strlen(source2))*sizeof(char));
buff = strcat(str, source2);
strcpy(buff, str);
free(str);
return buff;
}
Cuando recupero el valor de
buff me devuelve caracteres extraño, pero con el resultado del
return sale bien, ¿qué estoy haciendo mal con la variable
buff?
Por ejemplo:
Código:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char argv[], int nCmdShow)
{
char *buff;
char *ret;
ret = (char*)malloc((strlen("param")+strlen("1"))*sizeof(char));
ret = concat("param", "1", buff);
MessageBox(HWND_DESKTOP, ret, "return", MB_OK); // OK
MessageBox(HWND_DESKTOP, buff, "buffer", MB_OK); // devuelve caracteres extraños
free(ret);
free(buff);
return TRUE;
}