Next: Lecture et écriture par
Up: Les entrées-sorties
Previous: Pointeur invalide
Sous-sections
Lorsqu'on désire accéder à un fichier, il est nécessaire avant tout accès
d'ouvrir le fichier à l'aide de la fonction fopen.
fopen (nom-de-fichier ,
mode)
- -
- nom-de-fichier est de type pointeur vers char.
La chaîne pointée est le nom du fichier auquel on veut accéder.
- -
- mode est de type pointeur vers char.
La chaîne pointée indique le mode d'ouverture, elle peut être l'une des
chaîne suivantes :
- "r"
- ouverture d'un fichier texte en lecture.
- "w"
- ouverture d'un fichier texte en écriture.
- "a"
- ouverture d'un fichier texte en écriture à la fin.
- "rb"
- ouverture d'un fichier binaire en lecture.
- "wb"
- ouverture d'un fichier binaire en écriture.
- "ab"
- ouverture d'un fichier binaire en écriture à la fin.
- "r+"
- ouverture d'un fichier texte en lecture/écriture.
- "w+"
- ouverture d'un fichier texte en lecture/écriture.
- "a+"
- ouverture d'un fichier texte en lecture/écriture à la fin.
- "r+b" ou "rb+
- ouverture d'un fichier binaire en lecture/écriture.
- "w+b" ou "wb+
- ouverture d'un fichier binaire en lecture/écriture.
- "a+b" ou "ab+
- ouverture d'un fichier binaire en
lecture/écriture à la fin.
Remarque
La fonction fopen a été normalisée en ayant présent à l'esprit que
certains systèmes font la distinction entre fichiers binaires et fichiers
textes.
Cette distinction n'a pas cours dans le système UNIX.
La fonction
fopen retourne une valeur de type pointeur vers
FILE,
où
FILE est un type prédéfini dans le fichier
stdio.h.
- -
- Si l'ouverture a réussi, la valeur retournée permet de repérer le fichier,
et devra être passée en paramètre à toutes les procédures
d'entrées-sorties sur le fichier.
- -
- Si l'ouverture s'est avérée impossible, fopen rend la valeur
NULL.
- -
- Si le mode contient la lettre r, le fichier doit exister,
sinon c'est une erreur.
- -
- Si le mode contient la lettre w, le fichier peut, ou peut ne
pas, exister. Si le fichier n'existe pas, il est créé ; si le fichier existe
déjà, son ancien contenu est perdu.
- -
- Si le mode contient la lettre a, le fichier peut, ou peut ne
pas, exister. Si le fichier n'existe pas, il est créé ; si le fichier existe
déjà, son ancien contenu est conservé.
- -
- Si un fichier est ouvert en mode << écriture à la fin >>, toutes
les écritures se font à l'endroit qui est la fin du fichier au moment
de l'exécution de l'ordre d'écriture.
Cela signifie que si plusieurs processus partagent le même FILE *,
résultat de l'ouverture d'un fichier en écriture
à la fin, leurs écritures ne s'écraseront pas mutuellement.
D'autre part, si un processus ouvre un fichier en écriture à la fin, fait
un
fseek
pour se positionner à un endroit du fichier, puis fait une
écriture, celle-ci aura lieu à la fin du fichier (pas nécessairement à
l'endroit du fseek).
Quand un programme est lancé par le système, celui-ci ouvre trois fichiers
correspondant aux trois voies de communication standard :
standard input,
standard output et
standard error.
Il y a trois constantes prédéfinies dans
stdio.h de type pointeur
vers
FILE qui repèrent ces trois fichiers.
Elles ont pour nom respectivement
stdin,
stdout et
stderr.
#include <stdio.h>
FILE *fp;
if ((fp = fopen("donnees","r")) == NULL)
{
fprintf(stderr,"Impossible d'ouvrir le fichier données en lecture\n");
exit(1);
}
Quand on a terminé les E/S sur un fichier, il faut en informer le système
à l'aide de la fonction
fclose.
fclose (flot-de-données)
- -
- flot-de-données est de type pointeur vers FILE.
Il pointe vers le fichier à fermer.
La fonction
fclose rend la valeur zéro si le fichier a été fermé,
et rend
EOF si il y a eu une erreur.
#include <stdio.h>
FILE *f;
fclose(f);
Next: Lecture et écriture par
Up: Les entrées-sorties
Previous: Pointeur invalide
Bernard Cassagne
1998-12-09