Hemos estado indagando por todo el mundo online para así darte la respuesta a tu duda, si tienes alguna difcultad déjanos la duda y te responderemos con gusto.
Solución:
Generalmente, EOF no es un personaje; es la ausencia de un personaje.
Si un programa se ejecuta en un terminal en modo canónico con la configuración predeterminada (es decir, un programa C simple que solo usa stdio), nunca verá el carácter ASCII EOT. El controlador de terminal reconoce ese carácter y crea una condición EOF (que en el nivel bajo es un valor de retorno 0 desde read()
). La biblioteca stdio traduce esa condición EOF en el valor de retorno que es apropiado para la función en cuestión (el EOF
macro por getchar()
a null puntero para fgets()
etc.)
El valor numérico de la EOF
macro no tiene relevancia en ninguna parte excepto en la biblioteca C, y no debería influir en su comprensión del significado de la condición EOF.
EOF
en el contexto de C es simplemente algo que no puede aparecer en un archivo. EOT
es un carácter ASCII que históricamente señalaba el final de un mensaje (y es un carácter especial en terminales UNIX que significa el final del flujo cuando aparece solo en la entrada del usuario), pero PUEDE aparecer en archivos, por lo que usarlo en C para señalar el final de un archivo sería una idea terrible al leer archivos binarios.
EOT es uno de varios caracteres de control utilizados por los dispositivos seriales. Hay una serie de otros caracteres de control que están relacionados con la transmisión de datos a través de líneas seriales o el almacenamiento de archivos en una fuente serial como una cinta de papel. Estos incluyen caracteres como SOH, STX, ETX, FS, RS, GS y US. Se utilizan caracteres de control adicionales para el control de la transmisión y la corrección de errores.
En una conexión en serie, un carácter EOT (fin de transmisión) indica el deseo de finalizar la transmisión. Por lo general, se accede a las conexiones en serie mediante un controlador de archivos. Cuando finaliza la transmisión en serie, el controlador de archivos lo informa como una condición EOF (fin de archivo).
EOF no es un personaje. getchar() devuelve un número entero. Un carácter válido while tendrá un valor en el rango de 0 a 255. El valor de -1 se usa a menudo como falseIndicador de /invalid/fail en Unix/Linux. (En realidad, un valor distinto de 0, ya que hay varias razones para no tener éxito, pero generalmente solo un caso de éxito). Cuando getchar() devuelve -1, claramente no está devolviendo un carácter. Sin embargo, si almacena la salida en un byte, no podrá distinguir EOF del carácter DEL (Eliminar).