Problema con ejercicio!
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
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.
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.
arreglado jeje sorry!!