Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2015, 12:14
rdv316
Invitado
 
Mensajes: n/a
Puntos:
El bucle while con ¡feof me duplica el último registro [C]

Hola.
Tengo un inconveniente con el bucle while y es que al imprimir el archivo me duplica el último registro, encontré este mismo inconveniente posteado en distintos foros pero ningún ej. me dio resultado.-
¿Me podrían decir cómo puedo hacer para solucionarlo?.-

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. struct registro{
  5.     char marcado;
  6.     char ingles[30];
  7.     char espaniol[30];
  8. }est;
  9.  
  10. int main(void){
  11.     printf("\n ingl%cs.......: ", 130);
  12.     gets(est.ingles);
  13.  
  14.     printf("\n traducci%cn...: ", 162);
  15.     gets(est.espaniol);
  16.  
  17.     FILE * ptr;
  18.  
  19.     if( ( ptr=fopen("archivo.txt","a+") ) == NULL ){
  20.         printf("\n No se pudo abrir el archivo...");   
  21.     }
  22.     else{
  23.         fwrite(&est,sizeof(est),1,ptr);
  24.         est.marcado = '*';
  25.    
  26.         rewind(ptr);
  27.  
  28.         printf("\n  Borrado   Ingl%cs       Espa%col", 130, 164);  
  29.         while(!feof(ptr)){
  30.             fread(&est,sizeof(est),1,ptr);
  31.             printf("\n %8d %8s %13s", est.marcado ,est.ingles, est.espaniol);  
  32.         }
  33.  
  34.         fclose(ptr);       
  35.     }
  36.  
  37.     return 0;
  38. }

Saludos.
Daniel

Última edición por rdv316; 24/03/2015 a las 12:17 Razón: Si pongo el código no me da de alta el post, tengo que enviarlo sin el código y luego editarlo para insertarle el programa.-