Programa C++ que crea un
fichero binario con los datos de los empleados de una empresa. El nombre del
fichero a crear es empleados.dat. Los datos de los empleados se leen por teclado. La lectura de datos de empleados acaba cuando
se pulsa la tecla F6 en el nombre del empleado.
Los datos de cada
empleado se escribirán 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
ofstream f;
ifstream in;
char resp;
int conta = 0;
//se abre el fichero para añadir datos al final
f.open("empleados.dat", ios::out|ios::app|ios::binary);
f.open("empleados.dat", ios::out|ios::app|ios::binary);
if (f.fail())
{
cout << "Error
al crear el fichero empleados.dat" << endl;
system("pause");
exit(1);
}
// Entrada de datos
cout << "Entrada de
datos. F6 para finalizar\n\n";
cout <<
"Nombre: ";
cin.getline(registro.nombre, 20);
while (!cin.eof())
{
cout <<
"Apellidos: ";
cin.getline(registro.apellidos, 20);
cout <<
"Departamento: ";
cin.getline(registro.departamento, 20);
cout << "Sueldo:
";
cin >> registro.sueldo;
// Se escribe la estructura
en el fichero
f.write((char
*)®istro,tamanyo);
cin.ignore(numeric_limits<int>::max(),'\n');
cout <<
"Nombre: ";
cin.getline(registro.nombre,
20);
}
cin.clear();
f.close();
do
{
cout
<< "Mostrar empleados(S/N)? ";
cin.get(resp);
cin.ignore(numeric_limits<int>::max(),'\n');
} while
(toupper(resp) != 'S' && toupper(resp) != 'N');
// Listado de datos
if (toupper(resp) == 'S')
{
in.open("empleados.dat", ios::binary);
if(in.fail())
{
cout << "Error
al abrir el fichero empleados.dat" << endl;
system("pause");
exit(1);
}
// Leemos el primer registro
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;
// Leemos el siguiente
registro
in.read((char *)
®istro, tamanyo);
}
in.close(); // Cerramos el fichero
system("pause");
}
}
¿Que significa esto cin.ignore(numeric_limits::max(),'\n');?
ResponderEliminarNo c bro, pero si te responden me avisas xd
EliminarYo también lo ocupo, ahí avisan plebes..
Eliminar¿quien de aqui esta en archivos?
Eliminarcin.ignore() es un limpiador de buffer
EliminarHABEMOS VARIOS EN ARCHIVOS..
ResponderEliminar