Inverter Conteúdo de Arquivo Usando C

CBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como inverter o conteúdo de um arquivo usando a linguagem de programação C.
Leremos o conteúdo do arquivo de entrada caractere por caractere e o escreveremos de volta em ordem inversa no arquivo de saída.

Nota: Você precisa criar o arquivo ~/project/main.c por conta própria para praticar a codificação e aprender como compilar e executá-lo usando o gcc.

cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main

Abrir Arquivos de Entrada e Saída

No primeiro passo, abriremos os arquivos de entrada e saída usando a função fopen(). Criaremos dois ponteiros de arquivo para esses arquivos, um para entrada e outro para saída.

FILE *input_file, *output_file;
input_file = fopen("input.txt", "r");
output_file = fopen("output.txt", "w");

Contar o número de caracteres no arquivo de entrada

Nesta etapa, contaremos o número de caracteres no arquivo de entrada usando as funções fseek() e ftell().
Definiremos a posição do arquivo para o final do arquivo usando fseek(input_file, 0, SEEK_END); e obteremos a posição atual do arquivo usando ftell(input_file);.
Isso nos dará o número total de caracteres no arquivo de entrada.

fseek(input_file, 0, SEEK_END);
long total_characters = ftell(input_file);

Copiar os caracteres em ordem inversa do arquivo de entrada para o arquivo de saída

Agora que temos o número total de caracteres no arquivo de entrada, copiaremos os caracteres em ordem inversa para o arquivo de saída.
Iteraremos pelo arquivo de entrada caractere por caractere e escreveremos cada caractere no arquivo de saída usando a função fputc().
Começaremos do último caractere no arquivo de entrada e retrocederemos usando fseek(input_file, -1L, SEEK_CUR);.

for (long i = total_characters-1; i >= 0; i--) {
  fseek(input_file, i, SEEK_SET);
  char c = fgetc(input_file);
  fputc(c, output_file);
}

Fechar os arquivos de entrada e saída

Na última etapa, fecharemos os arquivos de entrada e saída usando a função fclose().

fclose(input_file);
fclose(output_file);

Resumo

Neste laboratório, aprendemos como inverter o conteúdo de um arquivo usando a linguagem de programação C. Abrimos os arquivos de entrada e saída, contamos o número de caracteres no arquivo de entrada, copiamos os caracteres em ordem inversa para o arquivo de saída e fechamos os arquivos de entrada e saída.