Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Teby45 en 17 Septiembre 2010, 21:31 pm



Título: Listar archivo binario
Publicado por: Teby45 en 17 Septiembre 2010, 21:31 pm
Necesito listar el contenido de un archivo binario, que tiene, por ejemplo 3 registros. Cuando se muestra la salida por consola, el código que escribí muestra el último registro repetido. ¿Por qué?.
Este es el código:
ifstream f("DatosBin1.dat", ios::in|ios::binary);
if(f.is_open())
{
 f.seekg(0,ios::beg);//
 cout<<"-----Listar todos los registros------"<<endl;
 while(!f.eof())
 {
  f.read(reinterpret_cast<char*>(&miReg), sizeof(miReg));
  cout<<setfill('-')<<setiosflags(ios::left);
  cout<<setw(5)<<miReg.NumReg;
  cout<<setw(20)<<miReg.Apellido;
  cout<<setw(20)<<miReg.Nombres;
  cout<<resetiosflags(ios::left);
  cout<<miReg.FecNac<<endl;
 }
}
 f.close();
else
{
 cout<<"No se pudo abrir el archivo"<<endl;
 cin.get();
}
      
La salida en pantalla muestra, por ejemplo:
1---Andrade-----------Carlos
2...Perez-------------Juan
3---García------------Miguel
3---García------------Miguel