C/Visual C - Ficheros aleatorios

 
Vista:

Ficheros aleatorios

Publicado por Mike (1 intervención) el 17/08/2004 06:48:28
Holas...!

La pregunta es...como hago para poder detectar el final de un fichero (aleatorio) para poder seguir agregando registros?

yo hice un programita asi de prueba, pero cuando pongo el nro de registro q quiero ver, siempre me muestra el último q ingresé.....
osea, cuando inserto un nuevo registro, en ves de agregar, me sobreescribe....

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

struct stReg
{
string nombre;
int dni;
}reg;

int main()
{
int op;

fstream fichero("pepe.dat", ios::in | ios::out | ios::trunc | ios::binary);

cout<<"opcion:"<<endl;
cin>>op;

while (op!=0){


switch (op){

// Para escribir
case 1:{
cout<<"Ingrese nombre:"<<endl;
cin>>reg.nombre;
cout<<"Ingrese dni:"<<endl;
cin>>reg.dni;

fichero.clear();
fichero.seekg(0, ios::end);
fichero.write(reinterpret_cast<char*> (®), sizeof(stReg));

break;}

// Para leer
case 2:{
int opt;
cout<<"Ingrese reg: "<<endl;
cin>>opt;

fichero.clear();
fichero.seekg(opt*sizeof(stReg),ios::beg );
fichero.read(reinterpret_cast<char*> (®), sizeof(stReg));

cout<<"Nombre: "<<reg.nombre<<endl;
cout<<"DNI: "<<reg.dni<<endl;}
}

cout<<"opcion:"<<endl;
cin>>op;
}

fichero.close();
return 0;
}

Supuestamente con esto:

fichero.seekg(0, ios::end);

debería posicionar el cursor al final del fichero, y poder añadir registros a partir de ahí....pero no puedo lograrlo....

eso nomás....gracias...!
Salu2!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder