hola he probado hacer un arreglo de apuntadores que apuntan a un arreglo de cadenas pero al momento de usar la función realloc para reservar mas memoria dinamicamente algo falla bueno falla al imprimir las cadenas por alguna razón se pierden las primeras cadenas
aqui mi codigo
#include <stdio.h>
int main(){
char ** M;
int i = 0,n,N=0;
char cad[30]={};
M = (char **)malloc(sizeof(char *));
do{
printf("Cadena: ");
gets(cad);
n = strlen(cad)+1;
*(M+i) = (char *)malloc(n*sizeof(char));
strcpy(*(M+i),cad);
i++;
N++;
M = (char **)realloc(M,sizeof(char*));
}while(cad[0]!='\0');
i = 0;
do{
puts(*(M+i));
i++;
}while(i<N);
getch();
return 0;
}
realloc() lo que hace es volver a coger una zona de memoria de X tamaño, y copiar lo que había en la anterior. Ahí, el tamaño que le pasas a realloc es siempre sizeof(char*), así que nunca cambia. Tal vez quisieras poner sizeof(char*)*(i+1).
muchisimas gracias me sirvió tu ayuda