Problema con ejercicio!

Aramasi Aas
28 de Mayo del 2011

struct OrigenNum{
int origen;
int dimensio;
};
struct Cap{
int numfrases;
OrigenNum frase[100];
};
void guardarAlFitxer(ColleccioFrases * col, char * nomFitxer){
struct Cap cap; //4+8*100=804bytes4
cap.numfrases=0;
FILE * arxiu;
arxiu=fopen(nomFitxer,"wb");
fseek(arxiu,804L,0);
while(cap.numfrasesmida){
cap.frase[cap.numfrases].origen=ftell(arxiu);
cap.frase[cap.numfrases].dimensio=strlen(col->vector[cap.numfrases])*sizeof(char);
fwrite(col->vector[cap.numfrases],cap.frase[cap.numfrases].dimensio,1,arxiu);
cap.numfrases++;
};
rewind(arxiu);
fwrite(&cap,sizeof(Cap),1,arxiu);
fclose(arxiu);
}

ColleccioFrases * recuperarDelFitxer(char * nomFitxer){
Cap cap;
FILE * arxiu;
arxiu=fopen(nomFitxer,"rb");
fread(&cap,sizeof(Cap),1,arxiu);
ColleccioFrases * ret=crearColleccioDeFrases();
char * frase=(char*)malloc((cap.frase[ret->mida].dimensio)*sizeof(char));
fread(frase,cap.frase[ret->mida].dimensio*sizeof(char),1,arxiu);
afegirAlfinalColleccioDeFrases(ret,frase);

while (ret->midamida].dimensio*sizeof(char));
fread(frase,cap.frase[ret->mida].dimensio*sizeof(char),1,arxiu);
afegirAlfinalColleccioDeFrases(ret,frase);
}
fclose(arxiu);
return ret;
}


Uso una funcion

Aramasi Aas
28 de Mayo del 2011
a esto le falta boton de editar :(((

La primera funcion guarda una estructura con cadenas de caracteres en un fichero, haciendo a la vez una cabecera para luego leerlo con la segunda funcion.

Con un editor hexadecimal veo que se ha guardado las frases y la cabecera bien en el .dat.

El problema llega cuando cargo que no lo hace bien y no vuelve a crear bien la estructura a partir del fichero.

Aramasi Aas
28 de Mayo del 2011
arreglado jeje sorry!!