Geral Múltipla Escolha

Em arquivos textos, quando desejamos substituir uma informação com o mesmo tamanho da nova informação, podemos realizar sobrescrever sobre a necessidade de arquivo temporário para receber a nova informação. Para essa questão, troque a letra 'i' pelo caractere 'y' na primeira linha do arquivo.

Em arquivos textos, quando desejamos substituir uma informação com o mesmo tamanho da nova informação, podemos realizar sobrescrever sobre a necessidade de arquivo temporário para receber a nova informação. Para essa questão, troque a letra 'i' pelo caractere 'y' na primeira linha do arquivo.

  1. arq=fopen("atividade.txt", "r+"); pos = ftell(arq); fseek(arq, pos, SEEK_SET); fputs(linha, arq);
  2. arq=fopen("atividade.txt", "r+"); pos = ftell(arq); fseek(arq, pos, SEEK_SET); fputs(linha, arq);
  3. arq=fopen("atividade.txt", "r+"); pos = ftell(arq); fseek(arq, pos, SEEK_SET); fputs(linha, arq);
  4. arq=fopen("atividade.txt", "r+"); pos = ftell(arq); fseek(arq, pos, SEEK_CUR); fputs(linha, arq);
  5. arq=fopen("atividade.txt", "r+"); pos = ftell(arq); fseek(arq, pos, SEEK_SET); fputs(linha, arq);

Resolução completa

Explicação passo a passo

A
Alternativa A

Alternativa A

Análise da Questão

Esta questão aborda a manipulação de arquivos em linguagem C, especificamente como modificar um arquivo existente sem apagar seu conteúdo original. O objetivo é substituir caracteres na primeira linha mantendo o restante do arquivo intacto.

Passo a Passo da Lógica do Código

  1. Abertura do Arquivo:
    O comando arq=fopen("atividade.txt", "__"); precisa abrir o arquivo em modo de leitura e escrita, mas sem truncar (apagar) o conteúdo.
  • A opção correta é "r+".
  • O modo "w+" criaria um arquivo vazio, perdendo os dados existentes.
  1. Salvamento da Posição:
    Antes de ler a linha, precisamos saber onde ela começa no arquivo para escrevermos de volta depois.
  • A função ftell(arq) retorna a posição atual do ponteiro do arquivo.
  • Assim: pos = ftell(arq); armazena o endereço inicial da primeira linha.
  1. Leitura e Modificação:
    O código lê a linha com fgets, modifica o texto dentro da variável linha (troca 'i' por 'y') e agora precisa gravar essa nova versão no lugar exato onde estava a antiga.
  2. Retorno à Posição Anterior:
    Após ler, o ponteiro do arquivo está no fim da linha lida. Para sobrescrever, devemos voltar ao início.
  • A função fseek(arq, pos, SEEK_SET) move o ponteiro para a posição pos (que salvamos antes), relativa ao início do arquivo (SEEK_SET).
  1. Gravação do Conteúdo:
    Precisamos escrever a string inteira contida em linha.
  • A função fputs(linha, arq) grava strings completas.
  • A função fputc seria usada apenas para caracteres individuais, o que tornaria a alternativa incorreta.

Tabela Comparativa das Funções Usadas

FunçãoPropósitoExemplo no Código
fopenAbre/cria arquivofopen(..., "r+")
ftellRetorna posição atualpos = ftell(arq)
fseekMove ponteiro do arquivofseek(arq, pos, SEEK_SET)
fgetsLê linha do arquivofgets(linha, ...)
fputsGrava string no arquivofputs(linha, arq)

Conclusão

A alternativa A é a única que combina corretamente:

  • Modo de abertura adequado (r+).
  • Uso correto de ftell para guardar a posição.
  • Uso correto de fseek para retornar à posição.
  • Uso correto de fputs para gravar a string modificada.

As outras alternativas falham em pontos cruciais: a B usa fputc (errado para strings), a C usa w+ (apagaria o arquivo), a D usa SEEK_CUR (voltaria do meio do arquivo) e a E inverte a ordem das funções.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Geral

Ver mais Geral resolvidas

Tem outra questão de Geral?

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