Error común: los archivos tienen un carácter EOF al final.

Estaba leyendo “lenguaje ensamblador de PC por Carter” y vi esta frase en la nota a pie de página de la página 32 que me dejó tan confundido.
Si asumimos que los archivos pueden no tener EOF al final (como dice el libro) es una statement correcta, ¿cómo podemos averiguar dónde está el final de un archivo?
y también surge otra pregunta: ¿fseek usa EOF para ir y venir en el archivo?

PC => ^ Z: EOF

en los viejos días de PC, el ctrl-Z era la señal en un archivo para EOF.

bajo UNIX y otros sistemas modernos: después de leer detrás de stat.st_size, se señala EOF

De http://www.drpaulcarter.com/cs/common-c-errors.php :

¿Cuál es este valor? EOF Un error común de los estudiantes es que los archivos tienen un carácter especial de EOF al final. No hay ningún carácter especial almacenado al final de un archivo. EOF es un código de error entero devuelto por una función.

Bueno, EOF no se almacena al final del archivo, y no es char . EOF es un mensaje de error, que las funciones de lectura regresan cuando no hay más datos para leer. Esta es la razón por la que getchar devuelve int : puede devolver un char convertido a int , o el int EOF (que no es un char válido, por lo que si lo obtuvo, puede estar seguro de haber aprobado el final del archivo).

EOF no se almacena en el archivo. El sistema operativo devuelve EOF (generalmente definido como -1) cuando no hay más datos para leer o se produjo un error de entrada. Así que una vez que llegue al final del archivo, debe presionar EOF.

Mi conjetura acerca de la statement en su libro es que significa "EOF is not necessarily be at the end of file but also possible to have it somewhere in the middle of a file". Esto es cierto en el error de entrada esperado.

En el contexto del código C, EOF es simplemente una indicación de que no hay más datos disponibles para un flujo de entrada dado. Si eso corresponde a un carácter EOF especial en el propio archivo es una función del archivo subyacente o del sistema de E / S.