Fonction fopen

Entête à inclure

#include <stdio.h>  // <cstdio> en C++

Fonction fopen

FILE * fopen( const char * filename, const char * accessMode );

Cette fonction permet d'ouvrir un flux de caractère basé sur fichier. Vous pouvez choisir entre différents modes d'ouverture du fichier (ouverture en lecture, en écriture, en ajout, ...) en fonction de vos besoins.

Paramètres

  • filename : ce paramètre permet de définir le nom du fichier à ouvrir. Vous pouvez spécifier un chemin absolu (à partir de la racine du système de fichiers) ou bien un chemin relatif (à partir du répertoire courant). Notez aussi qu'en fonction du système d'exploitation considéré, le nom du fichier sera sensible à la casse (différences entre minuscules et majuscules) ou non.
  • accessMode : ce paramètre permet de spécifier le mode d'ouverture du fichier. Les principaux modes supportés sont :
    • "r" (pour read) ouverture en lecture. Le fichier doit exister.
    • "w" (pour write) ouverture en écriture. Si le fichier existe, il sera alors remplacé.
    • "a" (pour append) ouverture en ajout. Si le fichier n'existe pas, il sera alors créé.

Valeur de retour

L'ouverture d'un fichier peut échouer pour différentes raisons (problème de sécurité, fichier non existant, ...). Il est donc nécessaire de vérifier la valeur retournée par un appel à cette fonction. Si la valeur retournée est non nulle, alors tout c'est bien passé : dans ce cas, la valeur de retour (de type FILE *) correspond au descripteur du fichier ouvert.

Si, par contre, une value nulle vous est retournée, alors c'est qu'une erreur vient de survenir. Il vous faudra alors consulter la variable errno pour obtenir de plus amples informations sur l'erreur constatée.

Codes erreurs pouvant être retournés

EINVAL : le mode d'ouverture du fichier que vous avez spécifié est invalide.

EACCES : un problème de sécurité d'accès au fichier a été constaté.

...

Exemple de code

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char * argv[] ) {
    
    FILE * inputFile;
    
    argc--;   argv++;
    
    if ( argc == 0 ) {
        printf( "Usage: sample filename...\n" );
        exit( 0 );
    }
    
    inputFile = fopen( argv[0], "a" );
    if ( inputFile == NULL ) {
        printf( "Cannot open file %s\n", argv[0] );
        exit( 0 );
    }
    
    fprintf( inputFile, "Appending a new message in the file\n" );

    fclose( inputFile );
        
    return 0;
}

Sujets connexes