fin de archivo en un flujo no me lo respeta

25/02/2004 - 19:08 por Bruce Almighty | Informe spam
Saludos al grupo

tengo un codigo para visualizar ciertos registros guardados en un
archivo binario, el código es el siguiente:

if((archivo = fopen("users.dat", "r+b")) == NULL)
{
printf("El archivo 'users.dat' no existe...");
exit(-1);
}

do
{
fread(usuario, sizeof(struct psw), 1, archivo);
printf("%d - Nombre de usuario: %s Contrasena: %s Pos: %d", i+1,
usuario->username, usuario->password, ftell(archivo));
i++;
} while(!feof(archivo));

fclose(archivo);
break;


el problema es que cuando visualiza el último registro no detecta el fin
de archivo y vuelve a visualizar el último registro y es entonces cuando
detecta el fin de archivo, es decir, el último archivo me lo visualiza dos
veces. ¿cual puede ser el problema?

Ing. Francisco Javier Orozco Candela
Ingeniería Digital Aplicada S.A. de C.V.
 

Leer las respuestas

#1 Cholo Lennon
26/02/2004 - 02:15 | Informe spam
El ciclo típico para leer archivos es al revés (con la condición de fin de
archivo al principio de todo).

// Correcto
while (!EOF) {
...
}

y no como tu estás haciendo, es decir

// Incorrecto
do {
...
} while (!EOF);


Como ejercicio te queda a ti el averiguar el porqué de la cuestión!!

Saludos
Cholo Lennon
Salta, ARG

Preguntas similares