O tipo FILE armazena todas as informações referentes a um arquivo. Uma variával do tipo FILE é utilizada para interagir com as funções da biblioteca padrão que trabalham com arquivos.
Este tipo normalmente é implementado como uma struct, mas é dependente da implementação da biblioteca padrão e, portanto, sua estrutura interna não deve ser acessada diretamente. O acesso aos dados de uma variável do tipo FILE deve ser feito com as funções da biblioteca padrão.
O tipo FILE não é utilizado concretamente – sempre usa-se um ponteiro para o tipo FILE (FILE *). Isto se dá devido ao fato que, para abrir e fechar um arquivo, utiliza-se as funções fopen e fclose, respectivamente. Logo, o recurso é retornado pela função fopen, sendo um ponteiro para o arquivo aberto por esta função.