C/Visual C - Ayuda con vectores de estructuras dinamicas

 
Vista:

Ayuda con vectores de estructuras dinamicas

Publicado por David Barrientos Velasco (2 intervenciones) el 29/09/2004 19:25:00
Muchahos (as):

Necesito que alguien me ayude con el codigo para asignar vectores dinamicos a una estructura. La idea es la siguiente:

Me pidieron que haga una simulador de shell en UNIX para crear eliminar y recorrer directorios y archivos, al principio me dijeron que un directorio podia aceptar solo diez subdirectorios. Mi estructura era la siguiente:
struct Directory
{
char name[25];
int num_dir; //cuantos directorios exiten en la actualidad
struct Directory *parent;
struct Directory *subdir[10];
};

Pero ahora me piden que ya no restrinja a 10, que lo haga dinamicamente, entonces ahora mi estructura es
struct Directory
{
char name[25];
int num_dir;
int size; //tamanio de bloque de memoria para los punteros
//*subdir
struct Directory *parent;
struct Directory *subdir;
};

Y le estoy asignando ha subdir=10*sizeof(struct Directory), y cuando se llena le aumento subdir=realloc(currentDir->subdir,2*currentDir->size), pero no logra acceder al vector *subdir[0],*subdir[1], ....

El compilador me saca error, por favor si alguien me puede ayudar le agradeceria mucho.

Atentamente DAVID
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con vectores de estructuras dinamicas

Publicado por chuidiang (677 intervenciones) el 30/09/2004 08:13:59
Lo de struct Directory *subdir está bien.
Cuando quieras darle tamaño, pon

subdir = (struct Directory *)malloc (10 * sizeof (struct Directory));

Cuando quieras cambiarle el tamaño, haz el realloc, pero pon el tamaño siempre como numero*sizeof(struct Directory)

subdir = realloc (currentDir->subdir, nuevoTamaño * sizeof (struct Directory));

Para acceder a un directorio, te sobra el * de delante, es decir, tendrías

subdir[0], subdir[1], etc

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con vectores de estructuras dinamicas

Publicado por David Barrientos Velasco (2 intervenciones) el 30/09/2004 09:02:59
Muchas gracias por la ayuda, pero quisiera que me ayudes en lo siguiente: con el puntero *subdir, no puedo acceder a los miembros de la estructura, el compilador me saca error cuando intento por ejemplo
struct Directory dir;
dir->subdir[2]->name;
dir->subdir[3]->num_dir;

Esta es mi estructura:
struct Directory
{
char name[25];
int num_dir;
int size; //tamanio de bloque de memoria para los punteros
//*subdir
struct Directory *parent;
struct Directory *subdir;
};

y como hago para liberar a un subdir[i], la sentencia
free(dir->sundir[4]);
me saca un error de compilacion, gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar