Post

Fiche Gestion des Fichiers en C

Fiche de Révision : Gestion des Fichiers en C

1. Introduction aux fichiers

En C, les fichiers permettent de stocker et de manipuler des données de manière persistante. On utilise la bibliothèque <stdio.h> pour les manipuler.

2. Types de fichiers

1. Fichiers Texte

  • Stockent des caractères lisibles (.txt, .csv, etc.).
  • Utilisent des fonctions comme fprintf(), fscanf().
  • Exemple : Fichier contenant du texte brut.

2. Fichiers Binaires

  • Stockent des données sous forme binaire (.dat, .bin, etc.).
  • Plus compacts et plus rapides.
  • Utilisent fwrite(), fread().

3. Ouverture et Fermeture d’un Fichier

Avant d’utiliser un fichier, il faut l’ouvrir avec fopen() et le fermer avec fclose().

1
2
3
4
5
6
7
8
FILE *fichier;
fichier = fopen("monfichier.txt", "r"); // Ouvre en lecture
if (fichier == NULL) {
    printf("Erreur d'ouverture du fichier !
");
    return 1;
}
fclose(fichier);

Modes d’ouverture courants

ModeTypeDescription
rTexteLecture (erreur si le fichier n’existe pas)
wTexteÉcriture (création ou écrasement du fichier)
aTexteAjout à la fin du fichier (création si inexistant)
r+TexteLecture/écriture (erreur si inexistant)
w+TexteLecture/écriture (efface le fichier existant)
a+TexteLecture/ajout (création si inexistant, ajoute à la fin)
rbBinaireLecture en mode binaire
wbBinaireÉcriture en mode binaire
abBinaireAjout en mode binaire
rb+BinaireLecture/écriture binaire (erreur si inexistant)
wb+BinaireLecture/écriture binaire (efface le fichier existant)
ab+BinaireLecture/ajout binaire (ajoute à la fin)

4. Lecture et Écriture

1. Fichiers Texte

Écriture

1
2
3
4
FILE *f = fopen("test.txt", "w");
fprintf(f, "Bonjour monde !
");
fclose(f);

Lecture avec fgets

1
2
3
4
5
char buffer[100];
FILE *f = fopen("test.txt", "r");
fgets(buffer, 100, f); // lit une ligne au maximum de 99 caractères
printf("%s", buffer);
fclose(f);

Lecture caractère par caractère avec fgetc

1
2
3
4
5
6
FILE *f = fopen("test.txt", "r");
int c;
while ((c = fgetc(f)) != EOF) {
    putchar(c);
}
fclose(f);

2. Fichiers Binaires

Écriture

1
2
3
4
int nombre = 42;
FILE *f = fopen("data.bin", "wb");
fwrite(&nombre, sizeof(int), 1, f);
fclose(f);

Lecture

1
2
3
4
5
int nombre_lu;
FILE *f = fopen("data.bin", "rb");
fread(&nombre_lu, sizeof(int), 1, f);
printf("%d", nombre_lu);
fclose(f);

5. Manipulation Avancée

1. Déplacement dans un fichier

  • fseek(FILE* flux, long deplacement, int modeDeplacement) : Déplace le curseur.
    • SEEK_SET (0) : Depuis le début du fichier.
    • SEEK_CUR (1) : Depuis la position actuelle.
    • SEEK_END (2) : Depuis la fin du fichier.
  • ftell(f) : Renvoie la position actuelle.
  • rewind(f) : Remet le curseur au début.
1
2
3
fseek(f, 10, SEEK_SET); // Se déplace à la 10e position
long position = ftell(f);
rewind(f);

2. Fermeture

  • fclose(f) libère la mémoire.

6. Résumé

  • Ouvrir un fichier avec fopen() et vérifier si NULL.
  • Lire et écrire avec fprintf(), fscanf() (texte) ou fwrite(), fread() (binaire).
  • Utiliser fgets() pour lire des lignes et fgetc() pour lire caractère par caractère.
  • Fermer le fichier avec fclose().
  • Déplacer le curseur avec fseek(), ftell(), rewind().

Bien choisir le mode (r, w, a, etc.) pour éviter les pertes de données !

Le contenu de cet article est la propriété exclusive de son auteur.