| |
Programmation C |
|
Communication avec des fichiers
Communiquer avec des fichiers peut être intéressant pour y stocker
durablement des informations.
Un fichier n'est rien d'autre qu'une masse plus ou moins importante de données,
conservée en permanence sur un certain support.
On peut se représenter un fichier comme un gigantesque tableau permanant, dans
lequel, un programme peut lire et écrire des données. La comparaison avec un
tableau implique qu'un fichier doit contenir des éléments de même nature, donc
de contenu homogène. En fait, contrairement à d'autres langages, le contenu d'un
fichier C n'est pas structuré à l'avance. Au contraire, ses données sont
simplement rangées sous la forme d'une suite continue de caractères (octets).
C'est pourquoi un fichier est parfois désigné par le terme "flux de données".
Chaque octet contenant un caractère pris individuellement peut être localisé
dans le fichier via un index. Ainsi, le premier caractère d'un fichier a la
position 0, le second la position 1, jusqu'au n ème caractère ayant pour
position n-1. Bien qu'un fichier soit donc fondamentalement considéré comme une
suite non structurée d'octets, il incombe au programmeur de créer une structure
de fichier telle que les données soient gérées comme il l'entend. Pour cela il
dispose de toute une série de fonctions adaptées, qui lui permettent de
manipuler des données de toutes dimensions et de tout type.
Deux niveaux permettant la communication avec un fichier, le bas niveau et le
haut niveau. Le bas niveau emploie des méthodes d'accès élémentaires, fondées
sur des fonctions qui s'appuient directement sur des routines correspondantes du
système d'exploitation. Les opérations de bas niveau dépendent directement
du système d'exploitation, et par conséquent ne font pas partie du standard ANSI.
Le haut niveau est fondé sur des fonctions prédéfinies, indépendantes du système
d'exploitation, et implémentées sur des fonctions de bas niveau. Nous traiterons
uniquement le haut niveau, étant plus facile et indépendant du système
d'exploitation.
Les trois étapes
- Ouverture du fichier
- Traitement
(lecture/écriture)
- Fermeture du fichier
L'ouverture du
fichier se fait de la manière suivante :
FILE *fp; // déclaration
d'une variable type pointeur fichier
fp = fopen(<arg1>,<arg2>); // Ouverture du fichier : 2 arguments à renseigner
La fonction
fopen();
permettant l'ouverture d'un flux de données attend deux arguments :
- <arg1>
: Le fichier à ouvrir (adresse)
- <arg2>
: Le mode d'ouverture
Modes d'ouverture :
|
MODE |
DESCRIPTION
|
|
r |
Ouvre
en lecture seule.
Renvoie NULL
si le fichier n'existe pas |
|
w |
Ouvre
en écriture seule.
Le fichier est créé s'il n'existe pas |
|
a |
Ouvre
en écriture seule, curseur en fin de fichier |
|
r+ |
Ouvre
en lecture et écriture.
Renvoie NULL
si le fichier n'existe pas |
|
w+ |
Ouvre en lecture et
écriture, le fichier est créé s'il n'existe pas.
Si il existe déjà, son contenu est écrasé. |
|
a+ |
Ouvre le fichier en lecture
et écriture, curseur placé à la fin de celui-ci. Si le fichier n'existe
pas, il est créé. |
Exemple :
FILE *fp;
fp = fopen("fichier.dat","w+"); // Ouverture du fichier nommé "fichier.dat" en
lecture & écriture
Vous pouvez travailler sur
un fichier uniquement lorsque celui-ci est ouvert, tout en tenant compte des
restrictions imposées par le mode d'ouverture. N'oubliez pas de fermer le
fichier à l'issue de ce travail par cette instruction :
fclose(fp); // fp désigne
le pointeur fichier déclaré précédemment
ATTENTION :
La déclaration de la variable tampon doit se faire en début de programme,
avant la déclaration des variables ordinaires (int, char, etc.)
En cas de traitement sur des fichiers partagés, concevez vos programmes afin que
le temps d'ouverture d'un fichier soit le plus court possible.
| [
<< Page précédente
|
| |
Page suivante >>
] |
|