Ouverture d'un fichier (fopen)

syntaxe fopen

#include <stdio.h>

/* Suite du code ... */

FILE *fopen(const char *nomfichier , const char *mode);

/* Suite du code ... */

Arguments

  • nomfichier : nom (ou chemin) externe du fichier à ouvrir.
    Par exemple: « C:\data\fichier1.txt ».
    Avant de lire ou d'écrire dans un fichier il faut "ouvrir le fichier". Cette opération permet d'associer (si vous en avez le droit) un flux au fichier désigné par son nom physique nom.
  • mode : mode d'ouverture.
    • r: Ouverture en lecture seule sur un fichier existant
    • w: Ouverture en écriture seule.
      Si le fichier existe il est détruit.
    • a: Ouverture pour écriture à la fin du fichier.
      Création du fichier s'il n'existe pas
    • r+: Ouverture en lecture ou écriture sur un fichier existant.
    • w+: Ouverture en lecture ou écriture.
      Si le fichier existe il est détruit.
      Création du fichier s'il n'existe pas.
    • a+: Ouverture en lecture ou écriture à la fin du fichier.
      Création du fichier s'il n'existe pas.

Remarque

Contrairement à MSDOS, il n'existe pas sous UNIX de différence entre un fichier binaire et un fichier texte. Ainsi, il existe sous MSDOS des modes d'ouvertures rb, wb, ab, r+b, w+b, a+b permettant d'ouvrir des fichiers en mode binaire et des modes d'ouvertures rt, wt, at, r+t, w+t, a+t permettant d'ouvrir des fichiers en mode texte.

Valeur retournée

Si elle aboutit, cette fonction retourne un pointeur sur le flux qui vient d'être ouvert; sinon, elle retourne NULL.

 

Exemple


Code c (sesame.c) (14 lignes) :
  1. /* test de l'ouverture en création */
  2.  
  3. #include <stdio.h>
  4.  
  5. void main (void)
  6. {
  7.   FILE *flux;
  8.   if ( (flux = fopen("toto.txt","w")) == NULL)
  9.   {
  10.     perror("fopen"); /* affichage d'un message d'erreur */
  11.     exit(1);
  12.   }
  13.   return 0;
  14. }

 

Document créé le 19/03/2002, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/c-fopen.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.