Na computação, EOF ou fim de arquivo (em Predefinição:Língua com nome), é uma condição do sistema operacional de um computador, atingida quando não há mais dados a serem lidos da "origem dos dados". Normalmente a origem dos dados é um arquivo ou stream.
Na linguagem de programação C, ou mais corretamente, na biblioteca padrão do C, o acesso a arquivos e outras funções de entrada/saída podem retornar um valor igual ao valor simbólico EOF (macro), para indicar que uma condição de fim de arquivo ocorreu. O valor do EOF é -1, mas é um valor dependente do sistema. A macro EOF é expandida pelo preprocessador ao seu valor de fato, antes do código ser compilado.
Nos sistemas Unix uma indicação de final de arquivo é enviada quando são pressionadas as teclas Ctrl+D em uma shell interativa (console). Nos sistemas da Microsoft, MS-DOS e Windows, esta indicação é enviada quando são pressionadas as teclas Ctrl+Z. Em certos casos, durante a manipulação de arquivos de texto ou leitura de dados de um "dispositivo de caracteres", a console do MS-DOS (COMMAND.COM), ou os utilitários do sistema, acrescentam um caractere de controle Control-Z (ASCII) ao final do arquivo do disco (ainda que o núcleo básico do sistema, o MSDOS.SYS, nunca acrescente um Control-Z). A razão disto é para manter compatibilidade retroativa com certas peculiaridades do sistema CP/M, já que o seu sistema de arquivos registra o comprimento dos arquivos em termos de quantos "registros" de 128-byte foram alocados. O sistema FAT (sistema de arquivos do MS-DOS), desde a sua primeira versão, sempre registrou o tamanho exato (em bytes) dos arquivos .