Vous êtes sur la page 1sur 14

Les fichiers

Introduction 1/2
• Un fichier peut être au format texte c’est-à-dire une suite de caractères
(terminées par le caractère spécial EOF (End Of File)) ou peut être un
fichier au format binaire.

• Les fichiers sont accessibles moyennant une mémoire tampon qu’on appelle «
buffer ».
Introduction 2/2
• Pour pouvoir manipuler un fichier, on a besoin de savoir un bon nombre
d’informations :
– L’endroit dans lequel le fichier a été placé en mémoire tampon,
– La position courante dans le fichier,
– Le mode d’ouverture du fichier : Lecture, écriture, ajout en fin de fichier, …
–…
• Ces informations sont rassemblées dans une structure de type : FILE *
définie dans <stdio.h>
Fonctions de traitement des fichiers 1/11
• Avant d’effectuer n’importe quelle opération sur un fichier, il faut l’ouvrir au
préalable.
• La fonction fopen()est chargée de cette mission.
FILE *fopen(char *nom_fichier, char *mode);
En cas de succès, elle renvoie un pointeur sur la structure FILE. Elle renvoie NULL en cas d’échec.
• Après avoir terminé les opérations sur le fichier en question, il faut annuler la
liaison (établie par fopen()) entre le fichier et le flot de données et ce en
appelant la fonction fclose().
int fclose(FILE *fp);
Fonctions de traitement des fichiers 2/11
• Les différents modes d’ouverture sont :
Fonctions de traitement des fichiers 3/11

À noter les remarques suivantes concernant les modes :


– Si le mode contient la lettre r, le fichier doit exister.
– Si le mode contient la lettre w, le fichier peut ne pas exister. Dans ce
cas, il sera créé. Si le fichier existe déjà, son ancien contenu sera perdu.
– Si le mode contient la lettre a, le fichier peut ne pas exister. Dans ce
cas, il sera créé. Si le fichier existe déjà, les nouvelles données seront
ajoutées à la fin du fichier.
Fonctions de traitement des fichiers 4/11
• Trois flots standard peuvent être utilisés en langage C sans qu'il soit
nécessaire de les ouvrir ou de les fermer :
– stdin (standard input) : unité d'entrée (par défaut, le clavier) ;
– stdout (standard output) : unité de sortie (par défaut, l'écran) ;
– stderr (standard error) : unité d'affichage des messages d'erreur (par
défaut, l'écran).
• Il est conseillé d'afficher systématiquement les messages d'erreur
sur stderr.
Fonctions de traitement des fichiers 5/11
La fonction d'écriture fprintf()

• La fonction fprintf(), analogue à printf(), permet d'écrire des données dans


un fichier. Sa syntaxe est :
fprintf(flot, "chaînedecontrôle", expr-1, ..., expr-n);
où flot est le flot de données retourné par la fonction fopen().

Les spécifications de format utilisées pour la fonction fprintf() sont les mêmes
que pour printf().
Fonctions de traitement des fichiers 6/11
La fonction de lecture fscanf ()
• La fonction fscanf, analogue à scanf, permet de lire des données d’un fichier.
Sa syntaxe est :

fscanf(flot,"chaînedecontrôle",arg-1,...,arg-n);
où flot est le flot de données retourné par la fonction fopen().

Les spécifications de format sont ici les mêmes que celles de scanf().
Fonctions de traitement des fichiers 7/11
• La fonction ayant le prototype :
char *fgets(char *string, int maxLength, FILE *stream);
permet de lire du fichier pointé par stream, au maximum maxLength caractères
et stocke les caractères lus dans la chaîne string.
• La fonction ayant le prototype :
int fputs(const char *string, FILE *stream)
permet d'écrire la chaîne de caractères string dans le ficher pointé par stream.
Fonctions de traitement des fichiers 8/11
• La fonction ayant le prototype :
int fgetc(FILE *stream);
permet de lire un caractère à partir de la position courante dans le fichier pointé par
stream. Elle renvoie le code (ASCII) du caractère lu ou EOF en cas d’erreur.

• La fonction ayant le prototype :


int fputc(int c, FILE *stream);
permet d’écrire, à partir de la position courante, le caractère c dans le fichier pointé
par stream. Elle renvoie le code ASCII du caractère écrit ou EOF en cas d’erreur.
Fonctions de traitement des fichiers 9/11
• La fonction ayant le prototype :
int fseek(FILE *stream, long offset, int whence);
permet de se positionner à la position whence + offset dans le fichier pointé par
stream.
L’argument whence peut prendre l’une des trois valeurs constantes suivantes :
SEEK_SET : Début du fichier.
SEEK_CUR : Position courante dans le fichier.
SEEK_END : Fin du fichier.
Fonctions de traitement des fichiers 10/11
• La fonction ayant le prototype :
long ftell(FILE *stream);
permet de retourner la position courante dans le fichier pointé par stream (en
nombre d'octets par rapport au début du fichier).
Fonctions de traitement des fichiers 11/11
• La fonction ayant le prototype :
int feof(FILE *stream);
permet de retourner une valeur booléenne. Elle renvoie une valeur non nulle si
la fin du fichier pointé par stream est atteinte. Elle renvoie 0 sinon.

Vous aimerez peut-être aussi