Hola.
Estoy intentando sacar todos los datos de un fichero,
menos uno el que quiero eliminar, a una lista para
despues guardar esta lista otra vez en el fichero
sobrescribiendolo. Los datos los saca perfectamente a la
lista y esta la recorre perfectamente para guardarlos
pero realmente no me guarda nada en el fichero (me lo
deja vacio), y no consigo encontrar el fallo.
void Usuario::eliminar(string login){
bool ok = false;
string comando = "deltree "; //deltree no tira en WinXP.
usuarios auxiliar;
fstream fichero;
list <usuarios> lista;
list <usuarios>::iterator nodo;
fichero.open(fRuta.c_str(), ios::in | ios::binary);
while(!fichero.eof()){
fichero.read((char*)&auxiliar, sizeof(usuarios));
if(!strcmpi(auxiliar.login, login.c_str())){
ok = true;
comando += ruta + auxiliar.directorio;
system(comando.c_str());
}else
lista.push_back(auxiliar);
}
fichero.close();
if(ok){
fichero.open(fRuta.c_str(), ios::out | ios::binary);
for(nodo = lista.begin(); nodo != lista.end(); nodo++){
auxiliar = *nodo;
auxiliar.usuario = fichero.tellg();
fichero.write((char*)&auxiliar, sizeof
(usuarios)); //Aqui debe de fallar
}
fichero.close();
}else
cout << "El usuario no existe." << endl;
lista.clear();
}
Gracias y salu2.
Leer las respuestas