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