Problema con estructuras(Registros) y archivos binarios
Hola amigos, tengo un problema con C y la escritura/lectura de archivos binarios:
El problema consiste en crear una estructura con campos char, int, enum y float, crear un vector del tipo de dicha estructura y luego guardarla en un archivo binario para despues leerla.
El caso es que no me funciona, si alguien pudiera ayudarme a encontrar el error se lo agradeceria mucho.
Creacion de estructura:
////////////////////////////////////////////////////////////
typedef enum TSTADO{SOLTERO,CASADO,VIUDO}Tstado;
typedef struct TCLIENTE{
int edad ;
char nombre[51];
float saldo;
Tstado estado;
}TCliente;
/////////////////////////////////////////////////////////
Funci贸n de escritura:
//////////////////////////////////////////////////////////
// inicio: posicion del vecto inicial, fin: posicion final, clte: puntero del vector de la estructura TCliente
//////////////////////////////////////////////////////////
int escribir_bin(int inicio,int fin, TCliente *clte){
FILE *archivo;
int nex=0;
archivo=fopen(\"DatosBanco.dat\",\"wb\");
if (archivo!=NULL)
{
nex+=fwrite(clte,sizeof(TCliente),fin,archivo);
fclose(archivo);
return nex;
}
return -1;
}
Funcion de lectura:
//////////////////////////////////////////////////
//inicio: posicion inicial, fin: posicion final, vector: puntero de nuestra nuevo vector de datos, nmax: el numero de elementos del vector
///////////////////////////////////////////////
int leer_bin(int inicio, int fin, TCliente *vector, int *nmax){
FILE *archivo;
int nex=0;
int conta=0;
archivo=fopen(\"DatosBanco.dat\",\"rb\");
if (archivo!=NULL)
{
vector=(TCliente *) malloc(sizeof(TCliente)*(fin-inicio));
*nmax=fin-inicio;
nex+=fread(vector+conta,sizeof(TCliente),fin,archivo);
fclose(archivo);
return nex;
}
else
return -1;
}
/////////////////////////////////////////////
Llevo casi una semana dandole vueltas. Gracias por adelantado. Cualquier duda del c贸digo preguntad sin reparo.
Un saludo.
El problema consiste en crear una estructura con campos char, int, enum y float, crear un vector del tipo de dicha estructura y luego guardarla en un archivo binario para despues leerla.
El caso es que no me funciona, si alguien pudiera ayudarme a encontrar el error se lo agradeceria mucho.
Creacion de estructura:
////////////////////////////////////////////////////////////
typedef enum TSTADO{SOLTERO,CASADO,VIUDO}Tstado;
typedef struct TCLIENTE{
int edad ;
char nombre[51];
float saldo;
Tstado estado;
}TCliente;
/////////////////////////////////////////////////////////
Funci贸n de escritura:
//////////////////////////////////////////////////////////
// inicio: posicion del vecto inicial, fin: posicion final, clte: puntero del vector de la estructura TCliente
//////////////////////////////////////////////////////////
int escribir_bin(int inicio,int fin, TCliente *clte){
FILE *archivo;
int nex=0;
archivo=fopen(\"DatosBanco.dat\",\"wb\");
if (archivo!=NULL)
{
nex+=fwrite(clte,sizeof(TCliente),fin,archivo);
fclose(archivo);
return nex;
}
return -1;
}
Funcion de lectura:
//////////////////////////////////////////////////
//inicio: posicion inicial, fin: posicion final, vector: puntero de nuestra nuevo vector de datos, nmax: el numero de elementos del vector
///////////////////////////////////////////////
int leer_bin(int inicio, int fin, TCliente *vector, int *nmax){
FILE *archivo;
int nex=0;
int conta=0;
archivo=fopen(\"DatosBanco.dat\",\"rb\");
if (archivo!=NULL)
{
vector=(TCliente *) malloc(sizeof(TCliente)*(fin-inicio));
*nmax=fin-inicio;
nex+=fread(vector+conta,sizeof(TCliente),fin,archivo);
fclose(archivo);
return nex;
}
else
return -1;
}
/////////////////////////////////////////////
Llevo casi una semana dandole vueltas. Gracias por adelantado. Cualquier duda del c贸digo preguntad sin reparo.
Un saludo.