INFORMATIQUE 3 : ALGORITHMIQUE ET
PROGRAMMATION
MIP Mathématiques S3
Gestion des fichiers
Pr. EL BOURAKADI Dounia
Email: [Link]@[Link] Année universitaire 2024/2025
Objectifs du cours
• Connaître Les principes fondamentaux et les règles de base pour écrire un
programme en C.
• Savoir utiliser les structures de contrôle de base en C, telles que les
instructions conditionnelles et les boucles.
• Comprendre et utiliser les tableaux, les chaines de caractères et les pointeurs
en C.
• Maîtriser la manipulation des fonctions et des structures en C.
• Manipuler des fichiers en C, pour lire, écrire et modifier des données.
2
Plan du cours
• Chapitre 1 : Introduction et Syntaxe de base du langage C.
• Chapitre 2 : Tableaux, Chaines de caractères et Pointeurs.
• Chapitre 3 : Fonctions et Structures.
• Chapitre 4 : Gestion des fichiers.
3
Plan du chapitre 4
Chapitre 4 : Gestion des fichiers.
1. Notion du fichier
2. Ouverture/Fermeture
3. Lecture d’un fichier texte
4. Ecriture dans un fichier texte
4
Chapitre 4
Gestion des fichiers
Gestion des fichiers en C
Dans les chapitres précédents on a manipulé que des données en mémoire, ce qui
nous empêchait de les stocker de manière permanente. On verra dans ce chapitre
comment conserver des informations de manière permanente à l’aide des fichiers.
6
Gestion des fichiers en C
Un fichier est un ensemble de données organisées, enregistrées sur un support, réunies sous
un même nom et manipulées comme une unité.
Le contenu de chaque fichier est lui-même organisé suivant un format qui dépend des
données qu’il contient:
• audio : MP3, MP4, FLAC, etc. ;
• vidéo : WebM, MP4, AVI, etc. ;
• documents : DOC et DOCX, XLS et XLSX, PDF, txt, etc.
Afin d’aider l’utilisateur, ces formats sont le plus souvent indiqués à l’aide d’une extension qui
se traduit par un suffixe ajouté au nom de fichier.
7
Gestion des fichiers en C
Les différentes fonctions nécessaires pour manipuler les fichiers sont déclarées dans l’en-
tête <stdio.h>. Toutefois, celles-ci manipulent non pas directement des fichiers, mais
des flux de données. Ces flux peuvent être de deux types :
• fichier texte où on enregistre seulement des textes (des suites de caractères terminées
par un caractère de fin de ligne \n ).
• fichier binaire où on peut enregistrer des données complexes.
8
Gestion des fichiers en C
Le programme a besoin d'un certain nombre d'informations afin de pouvoir manipuler un
fichier :
• l'adresse de l'endroit où se trouve le fichier,
• le mode d'accès au fichier (lecture ou écriture)
• ...
Ces informations sont rassemblées dans une structure dont le type, FILE *, qui est défini
dans stdio.h.
Un objet de type FILE * est appelé flot de données (en anglais, stream).
9
Gestion des fichiers en C
Pour faire une manipulation sur un fichier, on doit suivre les étapes suivantes:
1. Ouvrir le fichier
2. Faire le traitement nécessaire (Lecture ou Ecriture)
3. Fermer le fichier
10
Gestion des fichiers en C : Ouverture
Ouverture d’un fichier:
Syntaxe: FILE * f = fopen("chemin", "mode");
• La fonction fopen ouvre un fichier selon le chemin donné et renvoie un pointeur sur ce fichier.
• f est une variable qui stocke le résultat de la fonction fopen. Elle peut contenir soit NULL si
l’ouverture a échoué, soit une autre valeur autre que NULL.
• Le premier paramètre est le chemin d’accès au fichier: exemple: "[Link]" , "C:[Link] "…
• Le deuxième paramètre est une chaine de caractère spécifiant le mode d’accès .
11
Gestion des fichiers en C : Ouverture
Ouverture d’un fichier:
Les modes d’accès à un fichier texte :
• "r" ouverture d'un fichier texte en lecture. Dans ce cas le fichier doit exister.
• "w" ouverture d'un fichier texte en écriture. Dans ce cas le fichier peut ne pas exister,
alors il sera créé. Si le fichier existe déjà, son ancien contenu sera perdu.
• "a" ouverture d'un fichier texte en écriture à la fin. Dans ce cas le fichier peut ne pas
exister, alors il sera créé. Si le fichier existe déjà, les nouvelles données seront ajoutées à
la fin du fichier précédent.
12
• ….
Gestion des fichiers en C : Fermeture
Fermeture d’un fichier:
Après l’ouverture et les manipulations sur un fichier, fclose est la fonction permettant de
fermer le flot qui a été associé au fichier par la fonction fopen :
Syntaxe:
fclose(f);
La fonction fclose retourne un entier qui vaut zéro si la fermeture s'est déroulée
normalement (et une valeur non nulle en cas d'erreur).
13
Gestion des fichiers en C
Exemple:
Création du pointeur f du
type FILE*
Ouverture du fichier
[Link] en mode lecture
Tester si le pointeur
contient la valeur NULL.
C-à-d si l’ouverture s’est
passée correctement ou
elle a échoué
14
Gestion des fichiers en C
Remarque:
• Si le fichier existe sur le même dossier que le fichier .C et son exécutable .EXE, alors on
ajoute seulement son nom: f = fopen("[Link]", "r");
• Sinon, Il faut spécifier tout le chemin d’une manière correcte:
f = fopen("C:\\TP\\[Link]", "r");
Il faut mettre deux "antislashs" \ à chaque fois, S'il n'y en a qu'un, l’ordinateur pensera
qu’on va insérer un symbole spécial comme \n ou \t .
Pour écrire un "antislash" dans une chaîne de caractères, il faut donc l'écrire deux fois :
l’ordinateur comprend alors que c'est bien le symbole \ que vous vouliez utiliser.
15
Gestion des fichiers en C : Ecriture
On peut écrire dans un fichier en utilisant les fonctions :
[Link](Caractère , fichier) écrit un caractère dans le fichier.
Exemple: fputc(‘A’, f ); // Ecrit la lettre A dans le fichier f
[Link](Chaine de caractères , fichier) écrit une chaîne dans le fichier.
Exemple: fputs(’’Bonjour’’, f ); // Ecrit la chaine Bonjour dans le fichier f
[Link](fichier,Chaine + Format ,Var) écrit une chaîne formatée dans le fichier.
Exemple: int age;
printf("Quel age avez-vous ? "); scanf("%d", &age);
fprintf( f , "Vous avez %d ans", age);
Les fonctions d’écriture retournent un entier qui vaut EOF si l'écriture a échoué, sinon une autre valeur.
EOF : c’est une valeur réelle située dans stdio.h. Elle est utilisée pour dire soit qu'il y a eu une erreur,
soit que nous sommes arrivés à la fin du fichier.
16
Gestion des fichiers en C : Lecture
On peut lire depuis un fichier avec les fonctions suivantes:
[Link] (fichier) : lit un caractère depuis le fichier. Elle avance le curseur d'un caractère à chaque
fois qu’on l’appelle. Elle retourne un int : c'est le caractère qui a été lu. Sinon, elle retourne EOF .
Le premier appel de fgetc lit le premier caractère du fichier. Le deuxième appel permet la lecture du
second caractère, puis le troisième et ainsi de suite. On peut donc faire une boucle pour lire les
caractères un par un.
Exemple:
int caractereActuel;
do {
caractereActuel = fgetc(f); // On lit le caractère
printf("%c", caractereActuel); // On l'affiche
17
} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF
Gestion des fichiers en C : Lecture
2. fgets (Chaine, TailleMax, fichier) : lit une chaine de caractères (au maximum une ligne) et
s'arrête au premier \n qu'elle rencontre ou bien si on dépasse la paramètre TailleMax. Avec:
Chaine : dans laquelle on stocke la ligne lue.
TailleMax : le nombre de caractères maximal à lire.
Elle renvoie un pointeur vers la chaine lue si la lecture se passe correctement, sinon la valeur
NULL.
Exemple:
const int TailleMax=1000;
char chaine[TailleMax]="";
while (fgets(chaine, TailleMax, f) != NULL) // On lit tant qu’on n’a pas encore NULL
{
printf("%s", chaine); // On affiche la chaîne qu'on vient de lire
18 }
Gestion des fichiers en C : Lecture
3. fscanf (fichier, format, var) : est identique à la fonction scanf(). Au lieu de récupérer les
valeurs à partir du clavier, on les récupère depuis le flux fourni en argument .
Si aucune donnée ne peut être extraite, alors la valeur EOF sera retournée. Sinon, le nombre
de paramètres correctement extraits (lus) sera renvoyé.
Exemple:
int a;
fscanf(f ,"%d", &a);//lit un entier du fichier et le stocke dans la variable a
float b;
fscanf(f ,"%f", &b);//lit un réel du fichier et le stocke dans la variable b
19
Gestion des fichiers en C
Fonction Paramètres Valeur de retour
Ecriture
fputc Caractère , fichier Int / EOF
fputs Chaine caractères , fichier Int / EOF
fprintf fichier, Chaine+Format, Var Int / EOF
Lecture
fgetc fichier Int / EOF
fgets Chaine, TailleMax, fichier Pointeur / NULL
fscanf fichier, Format, Var Int / EOF
20
Exercice Gestion des fichiers :
Exercice :
1) Écrire un programme en C qui lit 10 notes tapées par l’utilisateur et qui les écrits dans un fichier
dont le nom sera demandé à l’utilisateur.
2) Réécrire une fonction en C creerFichier qui lit 10 notes tapées par l’utilisateur et qui les écrits
dans un fichier dont le nom sera passé en paramètre. Ecrire ensuite le programme principal.
21
Exercice Gestion des fichiers :
Correction Exercice 1:
22
Exercice Gestion des fichiers
Correction Exercice 2:
23