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.cpor 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.



