Te pongo un ejemplo para que lo entiendas mejor:
Si tienes alguna duda sobre cómo utilizar realloc() u otra función, pregunta.
Saludos.
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *cadena; //Puntero a char
char prueba[] = "Hola Mundo"; //Contenido que queremos poner en "cadena"
int i, longitud;
char letra = 'a'; //para asignarle valores a "cadena"
cadena = (char*) malloc (27 * sizeof(char)); //Tenemos 27 espacios para la cadena.
for(i=0; i<26; i++)
{
cadena[i] = letra;
letra++; //Pasamos a la siguiente letra del abecedario (valor en ASCII).
}
cadena[26] = '\0';
//Ya tenemos asignados todos los valores de "cadena". Ahora, vamos a concatenar.
longitud = strlen(prueba); //Hallamos la longitud para después quitar memoria
cadena = (char*) realloc (cadena, (longitud + 1) * sizeof(char));
//Sabemos que "prueba" tiene una longitud menor que "cadena". Por tanto, con realloc() se le quita memoria a "cadena",
//ya que no vamos a necesitar tanta. Se le reserva "longitud + 1" porque strlen() coge la longitud de la cadena sin
// el '\0' final.
strcpy(cadena, prueba); //Concatenamos
puts(cadena); //¡Ya tenemos "Hola Mundo en cadena!
return 0;
}
Si tienes alguna duda sobre cómo utilizar realloc() u otra función, pregunta.
Saludos.