En esta entrada vamos a leer el contenido de un fichero binario y vamos a crear un nuevo fichero binario donde escribiremos los registros del fichero original que cumplan una determinada condición.
Programa C++ que lee el fichero binario empleados.dat creado en una entrada anterior y crea un fichero binario sueldos2.dat que contendrá únicamente los empleados cuyo sueldo sea superior a 2000€
Programa C++ que lee el fichero binario empleados.dat creado en una entrada anterior y crea un fichero binario sueldos2.dat que contendrá únicamente los empleados cuyo sueldo sea superior a 2000€
Los datos de cada
empleado se han escrito en el fichero utilizando la siguiente estructura:
struct Templeado
{
char nombre[20];
char apellidos[20];
char departamento[20];
float sueldo;
};
#include
<iostream>
#include
<fstream>
using namespace
std;
struct Templeado
{
char nombre[20];
char apellidos[20];
char departamento[20];
float sueldo;
};
int main()
{
Templeado registro;
int tamanyo = sizeof(Templeado); // Tamaño de un registro
int conta = 0;
ofstream out;
ifstream in;
out.open("sueldos2.dat",
ios::binary);
if(out.fail())
{
cout << "Error al crear el
fichero sueldos2.dat" << endl;
system("pause");
exit(1);
}
in.open("empleados.dat",
ios::binary);
if(in.fail())
{
cout << "Error al abrir el
fichero empleados.dat" << endl;
system("pause");
exit(1);
}
// Lectura del primer registro del fichero
in.read((char *) ®istro, tamanyo);
while(!in.eof())
//mientras no se llegue al final del fichero
{
if(registro.sueldo>2000)
{
out.write((char *) ®istro,
tamanyo);
}
in.read((char *) ®istro,
tamanyo); //lectura del siguiente registro
}
in.clear();
in.close();
out.close();
//Mostrar los registros del fichero
sueldos2.dat
in.open("sueldos2.dat",
ios::binary);
if(in.fail())
{
cout << "Error al abrir el
fichero sueldos2.dat" << endl;
system("pause");
exit(1);
}
in.read((char *) ®istro, tamanyo);
while(!in.eof())
{
cout << "\nEMPLEADO:
" << ++conta << endl;
cout << "Nombre: "
<< registro.nombre << endl;
cout
<< "Apellidos: " << registro.apellidos << endl;
cout << "Departamento:
" << registro.departamento << endl;
cout << "Sueldo: "
<< registro.sueldo << endl;
in.read((char *) ®istro,
tamanyo);
}
in.close();
system("pause");
}
No hay comentarios:
Publicar un comentario