arreglo de cadenas con memoria dinamica

Iniciado por wolftdark, 7 Julio 2015, 00:06 AM

0 Miembros y 1 Visitante están viendo este tema.

wolftdark

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

ivancea96

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

wolftdark

muchisimas gracias me sirvió tu ayuda