Matemática Múltipla Escolha

Em uma operação de recuperação de informações a partir de um arquivo, após a leitura de um item, deve-se sempre verificar se o final do arquivo foi alcançado. A informação de EOF (End-Of-File - Final de Arquivo) pode ser obtida em diversas operações. Para essa questão, analise as linhas de código a seguir: I - info = fgets(info, ...); II - fputs(buffer, ...); III - fread(buffer, sizeof(buffer), 1, arq); IV - fputs(name, arq);

Em uma operação de recuperação de informações a partir de um arquivo, após a leitura de um item, deve-se sempre verificar se o final do arquivo foi alcançado. A informação de EOF (End-Of-File - Final de Arquivo) pode ser obtida em diversas operações. Para essa questão, analise as linhas de código a seguir:

I - info = fgets(info, ...);
II - fputs(buffer, ...);
III - fread(buffer, sizeof(buffer), 1, arq);
IV - fputs(name, arq);

  1. As funções das linhas II e IV podem retornar EOF.
  2. Apenas a função da linha I pode retornar EOF.
  3. A função da linha III não pode retornar EOF.
  4. As funções das linhas I e II podem retornar EOF.
  5. As funções das linhas I, II e III podem retornar EOF.

Resolução completa

Explicação passo a passo

C
Alternativa C

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:

  1. 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.
  1. 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.
  1. 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.
  1. 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:

AlternativaAfirmaçãoVereditoMotivo
AIII e IV retornam EOF❌ IncorretaA função III (fread) retorna contagem, nunca EOF.
BApenas I retorna EOF❌ IncorretaAs funções II (fputs) e IV (fputc) também retornam EOF em caso de erro.
CApenas III não retorna EOFCorretaÉ a única que identifica corretamente que fread se comporta diferente das outras.
DI e III retornam EOF❌ IncorretaNovamente, inclui a função III (fread), que não retorna EOF.
EI, II e III retornam EOF❌ IncorretaInclui 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.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática

Ver mais Matemática resolvidas

Tem outra questão de Matemática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.