10/05/2006, 10:51
|
| | Fecha de Ingreso: abril-2006 Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 8 meses Puntos: 2 | |
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 |