Alternativa C
Análise Detalhada das Funções de Entrada e Saída em C
Esta questão aborda os valores de retorno das funções da biblioteca padrão stdio.h em linguagem C, especificamente quando relacionadas ao conceito de End-Of-File (EOF).
Para identificar a resposta correta, devemos analisar o comportamento de cada função listada:
- Linha I -
fgets(info, ...):
- Função: Lê uma linha de texto de um arquivo.
- Retorno: Retorna um ponteiro (
char *) para o buffer na sucesso ou NULL se ocorrer erro ou fim do arquivo. - Observação: Embora tecnicamente retorne
NULL e não EOF (que é -1), em muitos contextos de questões, ela é agrupada como uma função de leitura que sinaliza o fim do fluxo.
- Linha II -
fputs(...):
- Função: Escreve uma string em um arquivo.
- Retorno: Retorna um valor inteiro não negativo na sucesso ou
EOF se ocorrer um erro de escrita.
- Linha III -
fread(...):
- Função: Lê blocos de dados binários.
- Retorno: Retorna o número de elementos lidos (tipo
size_t). Se atingir o fim do arquivo sem ler nada, retorna 0. - Ponto Crítico: Ela NUNCA retorna
EOF. O EOF é uma constante inteira negativa, enquanto fread retorna contagem.
- Linha IV -
fputc(...):
- Função: Escreve um único caractere.
- Retorno: Retorna o caractere escrito ou
EOF se ocorrer um erro.
Análise das Alternativas
Com base nos comportamentos acima, podemos eliminar as opções incorretas:
| Alternativa | Afirmação | Veredito | Motivo |
|---|
| A | III e IV retornam EOF | ❌ Incorreta | A função III (fread) retorna contagem, nunca EOF. |
| B | Apenas I retorna EOF | ❌ Incorreta | As funções II (fputs) e IV (fputc) também retornam EOF em caso de erro. |
| C | Apenas III não retorna EOF | ✅ Correta | É a única que identifica corretamente que fread se comporta diferente das outras. |
| D | I e III retornam EOF | ❌ Incorreta | Novamente, inclui a função III (fread), que não retorna EOF. |
| E | I, II e III retornam EOF | ❌ Incorreta | Inclui novamente a função III (fread). |
Conclusão:
A alternativa C é a correta porque destaca a particularidade da função fread. Enquanto as funções de escrita (fputs, fputc) retornam EOF em caso de erro, e as funções de leitura muitas vezes são associadas à detecção de fim de arquivo (mesmo que fgets retorne NULL), a função fread é distinta por retornar a quantidade de itens lidos, sendo impossível para ela retornar a constante EOF.