Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/05/2006, 11:55
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Cita:
solo veo 2 errores, como en la remimencion de tu vector,
ya que redimecionas empezando por 1, cuando supongo que lo que quieres es mantener la primer cadena. lo correcto seria redimencionar 2,3,4,etc

el otro error es querer acceder a vectores no creados.
dentro del ultimo for usas como limite del bucle 10 cuando seria 3.

la otra es que no liberaste la memoria.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main ()
{
int i, lon;

char **vector;

char palabra[15];

vector=(char**)malloc(sizeof(char*));
gets(palabra);
lon=strlen(palabra)+1;
vector[0]=(char*)malloc(lon*sizeof(char));
strcpy(vector[0], palabra);
puts(vector[0]);

for (i=1;i<3;i++)
{
gets(palabra);
lon=strlen(palabra)+1;
vector=(char**)realloc(vector,(i+1)*sizeof(char*)) ;//Si lo que quieres es aumentar una cadena mas es redimencionar a 2
vector[i]=(char*)malloc(lon*sizeof(char));
strcpy(vector[i], palabra);
puts(vector[i]);
}

for (i=0;i<3;i++)// No puedes acceder a vecotes no recervados, solo tienes 3.
{
puts(vector[i]);
free(vector[i]);
}
free(vector);
return 0;
}

Saludos
En si estas en lo correcto, pero que es lo que intentas hacer con realloc? yo no le veo sentido, ya que estas usando una lista de punteros. Seria mas eficiente hacer un malloc, con el numero de punteros que necesites, o en caso de que sea mas dinamico, una buena lista enlazada. Es mas sano.
Saludos