Logo Passei Direto
Buscar
Uma das vantagens de um arquivo binário consiste na possibilidade do uso direto de registros (estruturas de dados). Sendo assim, pode-se gravar ou recuperar, com apenas uma operação, todos os dados inseridos em tal estrutura de dados. Para essa questão, analise o trecho de código a seguir e preencha as lacunas.
Assinale a alternativa que você julgue conter a sequência correta do preenchimento das lacunas.
a- fseek(arq, 0, SEEK_SET); ts = fread(arq, sizeof(TSTRUCT), 1, arq); feof(arq)
b- fseek(arq, 0, SEEK_SET); fread(&ts, sizeof(TSTRUCT), 1, arq); feof(arq)
c- rewind(arq); ts = fread(arq, sizeof(TSTRUCT), 1, arq); feof(arq)
d- rewind(arq); fread(&ts, sizeof(TSTRUCT), 1, arq); feof(arq)
e- fseek(arq, 0, SEEK_END); ts = fread(arq, sizeof(TSTRUCT), 1, arq); feof(arq)
User badge image
Aprimorando com Questões

ano passado

Respostas

User badge image

Ed Verified user icon

ano passado

Para resolver essa questão, precisamos entender o que cada parte do código faz e como funciona a leitura de um arquivo binário em C. 1. fseek e rewind: Ambas as funções são usadas para mover o ponteiro de leitura/escrita em um arquivo. `fseek(arq, 0, SEEK_SET)` move o ponteiro para o início do arquivo, enquanto `rewind(arq)` também faz isso, mas é uma forma mais simples. 2. fread: Essa função é usada para ler dados de um arquivo. A sintaxe correta para ler um registro de uma estrutura é `fread(&ts, sizeof(TSTRUCT), 1, arq)`, onde `&ts` é o endereço onde os dados lidos serão armazenados. 3. feof: Essa função verifica se o final do arquivo foi alcançado, mas não é necessária para a leitura em si. Agora, analisando as alternativas: a) `fseek(arq, 0, SEEK_SET); ts = fread(arq, sizeof(TSTRUCT), 1, arq); feof(arq)` - Aqui, `ts` não deve receber o resultado de `fread` diretamente, e o uso de `arq` em vez de `&ts` está incorreto. b) `fseek(arq, 0, SEEK_SET); fread(&ts, sizeof(TSTRUCT), 1, arq); feof(arq)` - Correto, pois move o ponteiro para o início e lê os dados para `ts`. c) `rewind(arq); ts = fread(arq, sizeof(TSTRUCT), 1, arq); feof(arq)` - Novamente, `ts` não deve receber o resultado de `fread` diretamente. d) `rewind(arq); fread(&ts, sizeof(TSTRUCT), 1, arq); feof(arq)` - Correto, pois usa `rewind` para voltar ao início e lê os dados corretamente. e) `fseek(arq, 0, SEEK_END); ts = fread(arq, sizeof(TSTRUCT), 1, arq); feof(arq)` - Aqui, o ponteiro é movido para o final do arquivo, o que não faz sentido para a leitura inicial. As alternativas b) e d) estão corretas em termos de lógica, mas a b) é a que usa `fseek` para posicionar o ponteiro, enquanto a d) usa `rewind`, que é mais simples. Portanto, a alternativa correta é: b) `fseek(arq, 0, SEEK_SET); fread(&ts, sizeof(TSTRUCT), 1, arq); feof(arq)`.

Essa resposta te ajudou?

0
Dislike0
details

Libere essa resposta sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais conteúdos dessa disciplina