Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/03/2008, 10:17
luks316
 
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Eliminar archivos

Mira yo te recomiendo olvidarte del tipo FILE. Por que no usas el tipo fstream de la libreria fstream.h????
Esta es una funcion que use yo para eliminar un registro, sin usar un auxiliar (historia es un struct por las dudas):

Código:
void consulta::borra(historia &h){
        pacientes.open("archivo.dat",ios::in|ios::out|ios::binary);
        pacientes.seekg(0,ios::end);
        int i,cant= pacientes.tellg()/sizeof(historia);
        pacientes.seekp(0,ios::beg);
        for(i=0;i<cant;i++){
                historia aux;
                pacientes.read((char*)&aux,sizeof(historia));
                if(aux==h) break; //el operador == esta sobrecargado en el struct                                   
                                            //historia
        }
        for(int j=i+1;j<cant;j++){
                pacientes.seekp(j*sizeof(historia),ios::beg);
                historia aux;
                pacientes.read((char*)&aux,sizeof(historia));
                pacientes.seekp((j-1)*sizeof(historia),ios::beg);
                pacientes.write((char*)&aux,sizeof(historia));
        }
        historia *his=new historia[cant];
        pacientes.seekp(0,ios::beg);
        pacientes.read((char*)his,(cant-1)*sizeof(historia));
        pacientes.close();
        pacientes.open("archivo.dat",ios::in|ios::out|ios::binary|ios::trunc);
        pacientes.write((char*)his,(cant-1)*sizeof(historia));
        delete[] his;
}