Se dispone de un
fichero de texto alumnos.txt que
contiene los datos de los alumnos de un centro de enseñanza.
Cada línea del
fichero contiene los datos de un alumno, con el siguiente formato:
caracteres 01 a 20: Apellido 1
caracteres 21 a 40: Apellido 2
caracteres 41 a 60: Nombre
caracteres 61 a 70: Código del alumno
Ejemplo de contenido
del fichero alumnos.txt:
1234567890123456789012345678901234567890123456789012345678901234567890
González Salcedo Sancho 1023655890
López Rodríguez Ignacio 2258962122
Martínez Pascual Lucas 5893143333
Fernández Aznar Jesús 1458963250
García García Ana 8899204555
Escribe
un programa C++ que lea el fichero de texto y escriba su contenido en un
fichero binario alumnos.dat utilizando una estructura que contenga los datos
del alumno.
#include
<iostream>
#include
<fstream>
using
namespace std;
struct Talumno
{
char apellido1[21];
char apellido2[21];
char nombre[21];
char codigo[11];
};
int main()
{
Talumno registro;
int tamanyo = sizeof(Talumno);
ifstream in;
ofstream out;
in.open("alumnos.txt");
if(in.fail())
{
cout << "Error al abrir el
fichero alumnos.txt" << endl;
system("pause");
exit(1);
}
out.open("alumnos.dat",
ios::binary);
if(out.fail())
{
cout << "Error al crear el
fichero alumnos.dat" << endl;
system("pause");
exit(1);
}
in.getline(registro.apellido1,21);
//leer los 20 caracteres del primer apellido
while(!in.eof())
{
in.clear(); //elimina
el estado de error que produce getline
in.getline(registro.apellido2,21);
in.clear();
in.getline(registro.nombre,21);
in.clear();
in.getline(registro.codigo,11);
in.clear();
out.write((char *) ®istro,
tamanyo); //escribir en el fichero binario
in.getline(registro.apellido1,21);
}
in.close();
out.close();
system("pause");
}
Detalle de estilo; a mi en la carrera me suelen decir que los mensajes de error van en la parte, else , un saludo.
ResponderEliminar