Guardar array de registros en archivo binario
struct x{
int puntuacion_p;
string escuderia_p;
string nombre_p;
string puesto;
int poles;
int vueltas;
int disputados;
float clausula;
};
typedef x pilotos[80];
pilotos b;
--hasta aqui esta en un modulo que llamo desde el siguiente modulo--
ofstream FD;
FC.open("resulP.bin",ios::out | ios::binary);
FC.write(reinterpret_cast<char* >(&b),sizeof(pilotos));
FC.close();
--el caso esque cuando quiero leer esto en otro modulo--
int i,j;
bool insertado=false;
string c;
ifstream FB;
FB.open("resulP.bin",ios::in |ios::binary);
FB.read(reinterpret_cast<char *>(&b),sizeof(pilotos));
c = (p1.c_str());
i=0;
do
{if ((b[i].nombre_p==c) && (b[i].puesto=="RESERVA"))
{
b[i].puntuacion_p=b[i].puntuacion_p + 1;
insertado=true;
j=0;
for (j=0;j<=14;j++)
{
if (a[i].nombre_e==b[j].escuderia_p)
{a[i].puntuacion_r=a[i].puntuacion_r + 1;
a[i].saldo=a[i].saldo +1;
b[i].poles=b[i].poles +1;};
};
};
if ((b[i].nombre_p ==c) && (b[i].puesto=="OFICIAL"))
{
b[i].puntuacion_p=b[i].puntuacion_p + 1;
insertado=true;
j=0;
for (j=0;j<=14;j++)
{
if (a[i].nombre_e==b[j].escuderia_p)
{
a[i].puntuacion_e=a[i].puntuacion_e + 1;
a[i].saldo=a[i].saldo +1;
b[i].poles=b[i].poles +1;
};
};
};
i++;
}while ((i<=79) && (!insertado));
--me da error de ejecucion antres del primer if o durante el primer if alguien sabe porque puede ser??,todos los elementos del array estan inicializados,acaso debo pasar el fichero como parametro o valor de las funciones si es asi como se haria?,el principal problema esque cuando cambia de modulo es como si se perdiera la informacion del fichero, un saludo y espero vuestra ayuda.
int puntuacion_p;
string escuderia_p;
string nombre_p;
string puesto;
int poles;
int vueltas;
int disputados;
float clausula;
};
typedef x pilotos[80];
pilotos b;
--hasta aqui esta en un modulo que llamo desde el siguiente modulo--
ofstream FD;
FC.open("resulP.bin",ios::out | ios::binary);
FC.write(reinterpret_cast<char* >(&b),sizeof(pilotos));
FC.close();
--el caso esque cuando quiero leer esto en otro modulo--
int i,j;
bool insertado=false;
string c;
ifstream FB;
FB.open("resulP.bin",ios::in |ios::binary);
FB.read(reinterpret_cast<char *>(&b),sizeof(pilotos));
c = (p1.c_str());
i=0;
do
{if ((b[i].nombre_p==c) && (b[i].puesto=="RESERVA"))
{
b[i].puntuacion_p=b[i].puntuacion_p + 1;
insertado=true;
j=0;
for (j=0;j<=14;j++)
{
if (a[i].nombre_e==b[j].escuderia_p)
{a[i].puntuacion_r=a[i].puntuacion_r + 1;
a[i].saldo=a[i].saldo +1;
b[i].poles=b[i].poles +1;};
};
};
if ((b[i].nombre_p ==c) && (b[i].puesto=="OFICIAL"))
{
b[i].puntuacion_p=b[i].puntuacion_p + 1;
insertado=true;
j=0;
for (j=0;j<=14;j++)
{
if (a[i].nombre_e==b[j].escuderia_p)
{
a[i].puntuacion_e=a[i].puntuacion_e + 1;
a[i].saldo=a[i].saldo +1;
b[i].poles=b[i].poles +1;
};
};
};
i++;
}while ((i<=79) && (!insertado));
--me da error de ejecucion antres del primer if o durante el primer if alguien sabe porque puede ser??,todos los elementos del array estan inicializados,acaso debo pasar el fichero como parametro o valor de las funciones si es asi como se haria?,el principal problema esque cuando cambia de modulo es como si se perdiera la informacion del fichero, un saludo y espero vuestra ayuda.