Ed
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)`.


Cadastre-se ou realize login
Ao continuar, você aceita os Termos de Uso e Política de Privacidade