Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: wolftdark en 7 Julio 2015, 00:06 am



Título: arreglo de cadenas con memoria dinamica
Publicado por: wolftdark en 7 Julio 2015, 00:06 am
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

Código:
#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;
}


Título: Re: arreglo de cadenas con memoria dinamica
Publicado por: ivancea96 en 7 Julio 2015, 01:47 am
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).


Título: Re: arreglo de cadenas con memoria dinamica
Publicado por: wolftdark en 7 Julio 2015, 03:30 am
muchisimas gracias me sirvió tu ayuda