Geralmente, o EOF não é um caractere; é a ausência de um personagem.
Se um programa é executado em um terminal no modo canônico com configurações padrão (ou seja, um programa C simples que usa apenas o stdio), ele nunca verá o caractere ASCII EOT. O driver de terminal reconhece esse caractere e cria uma condição de EOF (que, no nível baixo, é um valor de retorno 0 de read()
). A biblioteca stdio traduz essa condição EOF no valor de retorno que é apropriado para a função em questão (a macro EOF
para getchar()
, um ponteiro nulo para fgets()
, etc.)
O valor numérico da macro EOF
não é relevante em lugar nenhum, exceto na biblioteca C, e não deve influenciar sua compreensão do significado da condição EOF.