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
| Mode | Type | Description |
|---|
| r | Texte | Lecture (erreur si le fichier n’existe pas) |
| w | Texte | Écriture (création ou écrasement du fichier) |
| a | Texte | Ajout à la fin du fichier (création si inexistant) |
| r+ | Texte | Lecture/écriture (erreur si inexistant) |
| w+ | Texte | Lecture/écriture (efface le fichier existant) |
| a+ | Texte | Lecture/ajout (création si inexistant, ajoute à la fin) |
| rb | Binaire | Lecture en mode binaire |
| wb | Binaire | Écriture en mode binaire |
| ab | Binaire | Ajout en mode binaire |
| rb+ | Binaire | Lecture/écriture binaire (erreur si inexistant) |
| wb+ | Binaire | Lecture/écriture binaire (efface le fichier existant) |
| ab+ | Binaire | Lecture/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.