Problema con feof

Iniciado por kuni2006, 9 Agosto 2016, 20:41 PM

0 Miembros y 1 Visitante están viendo este tema.

kuni2006

Hola yo tengo el siguiente codigo para escrbir en un archivo

{
       if(feof(file1)!=EOF)
       {
       rewind(file1);
       fscanf(file1, "%d", &libre);
       printf("Posicion: %d", libre);
       fseek( file, libre*sizeof(Persona), SEEK_SET );
       }
       else
       {
       fseek( file, 0, SEEK_END );
       }
       fwrite(&persona, sizeof(Persona), 1, file);
       printf("\nPersona guardada!\n");
       pausar();
       fclose(file);
       }


Hasta donde entiendo, si el archivo esta vacio tiene que ir al else pero no lo hace, alguien me puede dar una mano? desde ya gracias

AlbertoBSD

Segun la pagina:

http://www.cplusplus.com/reference/cstdio/feof/

CitarThis indicator is generally set by a previous operation on the stream that attempted to read at or past the end-of-file.
Tiene que existir una operacion previa que ya alcanzada el Fin del Archivo.

Esto es.

Si un archivo tiene 100 bvtes y tu les exactamente 100 bytes y no mas, no se activa el Fin del Archivo.
Por lo menos es lo que tengo entendido

Deberias de validar si esta vacio de alguna forma diferente, existe la libreria sys/stat.h en la cual te indica uno de los valores de la estructura stat la longitud del archivo.

Saludos!

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

class_OpenGL

AlbertoBSD, tienes la razón. El indicador de final de archivo solo se activa si se ha intentado leer uno o más bytes, pero no se ha/han podido leer porque no quedan más

Esto significa que hay que comprobar el final de archivo después de una operación de lectura.

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL