post #1 (permalink) Antiguo 26-ago-2011, 17:00
Predeterminado concatenar en c
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;
}
Usuario Registrado
Fecha de Ingreso: ago-11
Mensajes: 14
Gracias dadas: 0
Agradecido 0 veces en 0 Mensajes
QEPD está desconectado
Responder Citando
post #2 (permalink) Antiguo 27-ago-2011, 14:26
Predeterminado Solucionado
Solucionado.

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);

  return *buff;
}
Para utilizar la función:

Código:
char *buff, *ret;

ret = concat("¡hola", " mundo!", &buff);

MessageBox(HWND_DESKTOP, ret, "ret", MB_ICONINFORMATION | MB_OK);
MessageBox(HWND_DESKTOP, buff, "buff", MB_ICONINFORMATION | MB_OK);

Última edición por QEPD; 27-ago-2011 a las 14:27
Usuario Registrado
Fecha de Ingreso: ago-11
Mensajes: 14
Gracias dadas: 0
Agradecido 0 veces en 0 Mensajes
QEPD está desconectado
Responder Citando
post #3 (permalink) Antiguo 15-nov-2011, 04:49
Predeterminado
Cuanta mala práctica !
__________________

elrincondemariano.com.ar
ComunidadArgentina.net

Última edición por crazyboy; 15-nov-2011 a las 04:49
Usuario Normal
Fecha de Ingreso: sep-04
Edad: 21
Mensajes: 1,434
Gracias dadas: 0
Agradecido 0 veces en 0 Mensajes
crazyboy está desconectado
Responder Citando
Respuesta

Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Ir al Foro


La franja horaria es GMT -3. Ahora son las 04:06.