Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/01/2014, 19:27
Avatar de guzzano
guzzano
 
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 9 meses
Puntos: 13
Respuesta: Punteros y cadena.

Hice una función parecida a la tuya, no crees que es meter siempre el espacio del byte nulo. Así cuando se guarde una cadena, agrega al final el 0, y si se tiene que agregar otra, lo remplaza y vuelve a meter el byte nulo al final. Sé que lo agregas sobre todo para trabajar con textos, pero recuerda que muchas funciones usan el 0 para terminar la búsqueda. Así no rellenas la variable completa de 0.

Código C:
Ver original
  1. int block_mem(char **buff, char *block, size_t block_size,
  2.   size_t new_size)
  3. {
  4.   if (!(*buff))
  5.   {
  6.     /* +1 = null byte */
  7.     *buff = malloc((new_size + 1));
  8.    
  9.     if (!(*buff))
  10.       return NOT_MEMORY;
  11.   }
  12.   else
  13.   {
  14.     *buff = realloc(*buff, block_size + new_size);
  15.    
  16.     if (!*(buff))
  17.       return NOT_MEMORY;
  18.   }
  19.  
  20.   memcpy(*buff + block_size, block, new_size);
  21.   *(*buff + block_size + new_size) = '\0';
  22.  
  23.   return new_size;
  24. }