Evilgirl
2006-10-15 19:43:30 UTC
Hola a todos, tengo un problema con estructuras y el asignarles memoria
dinamicamente, el programa funciona asi:
Yo declaro este tipo de estructura:
typedef struct tabla{
int a;
int b;
}tabla;
Y tengo una funcion que me sirve para agregar nuevos elementos a esta
tabla:
void agregar(tabla **apunt,int *tam,int e1,int e2){
*tam=*tam+1;
apunt=(tabla **)realloc(apunt,((*tam)+1)*sizeof(tabla));
(*apunt)->a=e1;
(*apunt)->b=e2;
*tam=*tam+1;
}
En main yo declaro la variable
tabla *t;
la inicializo mas delante
t=(tabla *)malloc(sizeof(tabla));
llamo a la funcion agregar
agregar(&t,&tam,1,2);
El problema es que la funcion en vez de agregar los datos a la
estructura, solo reescribe el dato anterior, asi que no importa cuantas
veces mande llamar a la funcion, la estructura siempre tiene el ultimo
valor agregado :(
Se que es problema del apuntador, tengo que moverlo, pero creo que ya
me estoy bloqueando y no puedo verlo, podria alguien ayudarme??? Se los
agradecere mucho.
Buen Dia!
dinamicamente, el programa funciona asi:
Yo declaro este tipo de estructura:
typedef struct tabla{
int a;
int b;
}tabla;
Y tengo una funcion que me sirve para agregar nuevos elementos a esta
tabla:
void agregar(tabla **apunt,int *tam,int e1,int e2){
*tam=*tam+1;
apunt=(tabla **)realloc(apunt,((*tam)+1)*sizeof(tabla));
(*apunt)->a=e1;
(*apunt)->b=e2;
*tam=*tam+1;
}
En main yo declaro la variable
tabla *t;
la inicializo mas delante
t=(tabla *)malloc(sizeof(tabla));
llamo a la funcion agregar
agregar(&t,&tam,1,2);
El problema es que la funcion en vez de agregar los datos a la
estructura, solo reescribe el dato anterior, asi que no importa cuantas
veces mande llamar a la funcion, la estructura siempre tiene el ultimo
valor agregado :(
Se que es problema del apuntador, tengo que moverlo, pero creo que ya
me estoy bloqueando y no puedo verlo, podria alguien ayudarme??? Se los
agradecere mucho.
Buen Dia!