3
« en: Lunes 19 de Mayo de 2008, 16:50 »
Hola,
lo de que si se el tipo de estructura y numero de ellas si que tengo claro como se hace
estruct=(void *)malloc(sizeof(struct s_sos));
fread ((struct s_sos *)estruct, sizeof(struct s_sos), 1, fich);
Este trozo de codigo es de una prueba que hice. El problema que tengo reside precisamente en que no se de que tipo son las estructuras que leo. El numero de ellas si lo se, ademas tambien se el tamaño de cada una de ellas (antes de leer las estructuras leo un vector el cual incluye los tamaños de todas:
tamEstruct[0]=sizeof(struct left);
tamEstruct[1]=sizeof(struct proc1);
tamEstruct[2]=sizeof(struct proc1);
tamEstruct[3]=sizeof(struct combinador);
fwrite(&tamEstruct[0], sizeof(struct left), 1, fich1);
fwrite(&tamEstruct[1], sizeof(struct proc1), 1, fich1);
fwrite(&tamEstruct[2], sizeof(struct proc1), 1, fich1);
fwrite(&tamEstruct[3], sizeof(struct combinador), 1, fich1); )
Para leer deberia hacer entonces segun me dices de reservar memoria algo parecido a:
for(i=0;i<numBloques;i++){
*(estructuras+i)=malloc(*(tamEstruct+i)); // Aqui es cuando reservo la memoria
fread (*(estructuras+i), *(tamEstruct+i), 1, fich);
}
No?