Alternativa A
Esta questão aborda operações básicas de entrada e saída em arquivos binários na linguagem C, especificamente focadas na manipulação de estruturas de dados. O código demonstra como localizar um registro dentro de um arquivo onde os dados são armazenados diretamente na memória da estrutura.
Análise das Lacunas
Para preencher corretamente o código conforme os comentários explicativos, devemos analisar cada etapa da lógica do programa:
- Primeira Lacuna (
//posicionar no início do arquivo) - Após abrir o arquivo, é necessário garantir que o ponteiro de leitura comece do começo para percorrer todos os registros sequencialmente.
- A função correta para isso é
rewind(arq), que move o ponteiro para o byte zero do arquivo. - Alternativas que usam
fseek devem usar SEEK_SET para o início, mas a opção B usa SEEK_END, tornando-a incorreta. - Segunda Lacuna (
//ler a estrutura) - O objetivo é ler dados binários brutos de disco para a variável
ts. - A função padrão para leitura binária é
fread. Sua sintaxe é fread(ponteiro, tamanho, quantidade, arquivo). - Isso elimina a opção C (
fwrite escreve) e a opção E (fgets lê linhas de texto). - Terceira Lacuna (
//testar se foi encontrado o final de arquivo) - Para detectar quando não há mais dados para ler, utiliza-se a verificação de fim de arquivo.
- A função correta é
feof(arq). Não existe uma função padrão chamada apenas eof no C (o que torna a opção D incorreta).
Comparativo das Opções
| Função | Uso Correto? | Motivo |
|---|
rewind(arq) | Sim | Reseta posição para o início do arquivo. |
fseek(..., SEEK_END) | Não | Posiciona no final, contradizendo o comentário. |
fwrite(...) | Não | Escreve dados, o comentário pede "ler". |
fgets(...) | Não | Lê texto linha por linha, não binário estruturado. |
eof(arq) | Não | Função inexistente no padrão ANSI C. |
feof(arq) | Sim | Retorna verdadeiro se o fim do arquivo for alcançado. |
Conclusão
A sequência correta alinha perfeitamente com as funções padrão da biblioteca <stdio.h> para manipulação de arquivos binários. A alternativa A apresenta rewind para reiniciar a leitura, fread para capturar os dados da estrutura e feof para controlar o loop de busca.
Portanto, a resposta correta é a Alternativa A.