[C con Clase] Retroceder el puntero en archivo binario

Carolina Herrera carolinah802 en hotmail.es
Sab Jun 21 02:48:05 CEST 2008


Hola Salvador!!!

Estoy de acuerdo contigo en que deberiamos usar un compilador más actualizado, lo malo es que ése es el que usan en la universidad, y ya me ha pasado varias veces que programas que funcionan perfectamente en Dev C++, cuando me toca ejecutarlos en el Borland C++, aparecen, misteriosamente, muchos errores =(. De todos modos platicaré con mis profes a ver si de una vez se animan a actualizarse =Þ, y ya te contaré como me fue =)

Envio la parte del programa que no funciona, agregué variables como pa y pp para ver en que posición se encuentra el puntero al ejecutarlo paso por paso, de esa forma es que me di cuenta que la función fseek no estaba haciendo lo que debía =(

while(fread(&per, sizeof(per), 1, arper) && bus == 0)
{
      // en pa almaceno la posicion actual del puntero    
      long pa;
      pa = ftell(arper);
      if(per.ci == cibus && per.b == 'S')
      {
                        per.b = 'N';
                        // en pp almaceno la posicion del puntero luego de          
                        // haberlo retrocedido
                        long pp = 0;
                        // aqui retrocedo el puntero
                        fseek(arper, -sizeof(per), SEEK_CUR);
                        pp = ftell(arper);
                        fwrite(&per, sizeof(per), 1, arper);
                              bus = 1;
      }
}

En teoria, lo que debo hacer es borrar lógicamente un registro tomando como dato de entrada el número de la cédula de identidad, lo malo es que al hacer el fseek y el fwrite termino borrando todo menos lo que debería =(. Ya lo revisé una y mil veces y no encuentro el error o los errores, si alguien sabe que es lo que estoy haciendo mal... toda ayuda es muy bienvenida.

Besos a todos.

Karo


_________________________________________________________________
Connect to the next generation of MSN Messenger 
http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080620/521476b6/attachment.html>


Más información sobre la lista de distribución Cconclase