Inverser le contenu d'un fichier avec le langage C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à inverser le contenu d'un fichier en utilisant le langage de programmation C.
Nous allons lire le contenu du fichier d'entrée caractère par caractère, puis le réécrire dans l'ordre inverse dans le fichier de sortie.

Note : Vous devez créer le fichier ~/project/main.c vous-même pour pratiquer la programmation et apprendre à le compiler et à l'exécuter à l'aide de gcc.

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

Ouvrir les fichiers d'entrée et de sortie

Dans la première étape, nous allons ouvrir les fichiers d'entrée et de sortie en utilisant la fonction fopen(). Nous allons créer deux pointeurs de fichier pour ces fichiers, l'un pour l'entrée et l'autre pour la sortie.

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

Compter le nombre de caractères dans le fichier d'entrée

Dans cette étape, nous allons compter le nombre de caractères dans le fichier d'entrée en utilisant les fonctions fseek() et ftell().
Nous allons positionner le curseur de fichier à la fin du fichier en utilisant fseek(input_file, 0, SEEK_END); et obtenir la position actuelle du curseur de fichier en utilisant ftell(input_file);.
Cela nous donnera le nombre total de caractères dans le fichier d'entrée.

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

Copier les caractères dans l'ordre inverse du fichier d'entrée vers le fichier de sortie

Maintenant que nous connaissons le nombre total de caractères dans le fichier d'entrée, nous allons copier les caractères dans l'ordre inverse dans le fichier de sortie.
Nous allons parcourir le fichier d'entrée caractère par caractère et écrire chaque caractère dans le fichier de sortie en utilisant la fonction fputc().
Nous allons commencer par le dernier caractère du fichier d'entrée et nous déplacer en arrière en utilisant 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);
}

Fermer les fichiers d'entrée et de sortie

Dans la dernière étape, nous allons fermer les fichiers d'entrée et de sortie en utilisant la fonction fclose().

fclose(input_file);
fclose(output_file);

Résumé

Dans ce laboratoire (lab), nous avons appris à inverser le contenu d'un fichier en utilisant le langage de programmation C. Nous avons ouvert les fichiers d'entrée et de sortie, compté le nombre de caractères dans le fichier d'entrée, copié les caractères dans l'ordre inverse dans le fichier de sortie, et fermé les fichiers d'entrée et de sortie.