Developpez.com - C
X

Choisissez d'abord la catégorieensuite la rubrique :

next up previous contents index
Next: Lecture et écriture par Up: Les entrées-sorties Previous: Pointeur invalide

Sous-sections

Ouverture et fermeture de fichiers

Ouverture d'un fichier : fopen

 

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.

Utilisation

fopen (nom-de-fichier , mode)

Sémantique des paramètres

-
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.


Valeur rendue

    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.

Conditions particulières et cas d'erreur

-
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).  

Les voies de communication standard

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.      

Utilisation typique de fopen

#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);
   }

fermeture d'un fichier : fclose

  Quand on a terminé les E/S sur un fichier, il faut en informer le système à l'aide de la fonction fclose.

Utilisation

fclose (flot-de-données)

Sémantique des paramètres

-
flot-de-données est de type pointeur vers FILE. Il pointe vers le fichier à fermer.

Valeur rendue

La fonction fclose rend la valeur zéro si le fichier a été fermé, et rend EOF si il y a eu une erreur.

Utilisation typique

#include <stdio.h>
FILE *f;

fclose(f);


next up previous contents index
Next: Lecture et écriture par Up: Les entrées-sorties Previous: Pointeur invalide
Bernard Cassagne
1998-12-09
Contacter le responsable de la rubrique C