Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2010, 04:04
minette1988
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
eliminar registro duplicado

Tengo el siguiente código que consiste en eliminar un registro repetido, pero por más que lo intento no lo entiendo he buscado en manuales de C, pero no encuentro nada.

Código C:
Ver original
  1. int prueba_duplicada(){ /*Devuelve 0 no duplicada y 1 duplicada*/
  2. FILE *pf;
  3. prueba_paciente p,paux;
  4. long int pos, pos1;
  5. int encontrado=0;
  6.  
  7. if((pf=fopen("prueba_paciente","rb"))==NULL){
  8.   printf("Error al abrir el fichero prueba_paciente.\n");
  9. }
  10. else{
  11.   fread(&p,sizeof(p),1,pf);
  12.   while(!feof(pf)&&!encontrado){
  13.        pos=ftell(pf)-sizeof(p);
  14.        fseek(pf,0,SEEK_SET);
  15.        pos1=0;
  16.        while((pos1 < pos)&&!encontrado){
  17.            fread(&paux,sizeof(paux),1,pf);
  18.                 pos1=ftell(pf);
  19.                 if(strcmp(p.nss,paux.nss)==0)
  20.                      if(strcmp(p.prueba,paux.prueba)==0){
  21.                          encontrado=1;
  22.                      }
  23.        }
  24. fseek(pf,pos+sizeof(p),SEEK_SET);
  25. fread(&p,sizeof(p),1,pf);
  26. }
  27. fclose(pf);
  28. return(encontrado);
  29. }

¿Alguien puede explicarme detalladamente el código sino le es mucha molestia?Estaría muy agradecida. Gracias.