09/03/2008, 10:17
|
| | 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;
}
|