Foro: Dudas y Consultas

PUNTO 11 tp6

PUNTO 11 tp6

de Usuario eliminado -
Número de respuestas: 2

Buenas tardes profe, tengo problemas con el módulo de baja, cuando uso el remove no me deja eliminar el archivo;

 

void borrar(parchivo p, int buscado){
bool encontrado = false;
parchivo aux;
paciente pac;
p = fopen("pacientes.dat","rb");
aux = fopen("temporal.dat","w");
if(p != NULL){
while(!feof(p)){
fread(&pac,sizeof(pac),1,p);
if(pac.carnet != buscado && !feof(p))
fwrite(&pac,sizeof(pac),1,aux);
}
fclose(aux);
fclose(p);
if(remove("pacientes.dat")==0){
cout<<"ELIMINADO EXITOSO"<<endl;
if(rename("temporal.dat","pacientes.dat")==0)
cout<<"Renombrado exitoso"<<endl;
else
cout<<"Error al renombrar"<<endl;
}else
cout<<"ERROR AL ELIMINAR"<<endl;
}
}

 

cual podría ser el problema? me fije en las carpetas y el archivo si existe

En respuesta a Usuario eliminado

Re: PUNTO 11 tp6

de Usuario eliminado -
Ya lo solucioné, abri el archivo aux en modo wb y ahora funciona correctamente, pero me entró la duda de por qué eso afecta al borrado del otro archivo?
En respuesta a Usuario eliminado

Re: PUNTO 11 tp6

de Verónica Torres -
Hola Ignacio, el problema justamente se genera al trabajar con archivos diferentes (texto y binario) debe haber correspondencia con todos los módulos para evitar el problema, puede que por ese lado esté el otro problema, más en el acceso que en el borrado en realidad, ya que para borrarlo no debería tener problemas pero al renombrarlo el archivo ya no corresponde a los que necesitan los otros módulos. Para detectar correctamente debería poder analizar el código completo.