FOPEN |
Ouvrir un fichier |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
FILE *fopen(const char *nomfichier,const char *mode) |
Paramètres
Nom | Description | |
---|---|---|
nomfichier | Ce paramètre permet d'indiquer le nom du fichier | |
mode | Ce paramètre permet d'indiquer le mode d'ouverture, pouvant être combiné, du fichier : | |
Valeur | Description | |
a | Cette valeur indique une création en ajoutant à la fin du fichier | |
b | Cette valeur indique une ouverture en mode binaire | |
a+ | Cette valeur indique une création en ajoutant à la fin du fichier existant | |
r | Cette valeur indique un mode d'accès en lecture | |
r+ | Cette valeur indique un mode d'accès en lecture d'un fichier existant | |
t | Cette valeur indique une ouverture en mode texte | |
w | Cette valeur indique un mode d'accès en écriture | |
w+ | Cette valeur indique un mode d'accès en écriture et écrase le fichier existant |
Description
Cette fonction effectue l'ouverture d'un fichier.
Remarques
- La fonction fopen() ouvre un fichier dont le nom est pointé par nomfichier et elle retourne le flux de données lui étant associé. Le type d'opérations étant autorisées sur le fichier est défini par la valeur de mode. Le nom de fichier doit être une chaîne de caractères comprenant un nom de fichier valide tel que défini par le système d'exploitation et peut inclure une spécification de chemin si l'environnement le prend en charge. Si la fonction fopen() réussit à ouvrir le fichier spécifié, un pointeur FILE est renvoyé. Si le fichier ne peut pas être ouvert, un pointeur null est renvoyé.
- La méthode détecte toute erreur lors de l'ouverture d'un fichier, tel qu'un disque protégé en écriture ou un disque complet, avant d'essayer d'y écrire. Une valeur NULL est utilisé pour indiquer une erreur car aucun pointeur de fichier n'aura jamais cette valeur.
- Si vous utilisez la fonction fopen() pour ouvrir un fichier pour la sortie, tout fichier préexistant portant ce nom sera effacé et un nouveau fichier démarré. Si aucun fichier de ce nom n'existe, un nouveau fichier sera créé.
- L'ouverture d'un fichier pour les opérations de lecture nécessite que le fichier existe. S'il n'existe pas, une erreur sera renvoyée. Si vous souhaitez ajouter à la fin du fichier, vous devez utiliser le mode "a". Si le fichier n'existe pas, il sera créé.
- Lorsque vous accédez à un fichier ouvert pour des opérations de lecture et d'écriture, vous ne pouvez pas suivre une opération de sortie avec une opération d'entrée sans un appel intermédiaire à fflush(), fseek(), fsetpos() ou rewind(). En outre, vous ne pouvez pas suivre une opération d'entrée avec une opération de sortie sans un appel intermédiaire à l'une des fonctions mentionnées précédemment.
- Définition et utilité : La fonction fopen est utilisée en C et en C++ pour ouvrir un fichier et obtenir un pointeur vers un objet de type FILE. Elle permet d'accéder aux fichiers en mode lecture, écriture ou ajout (append). Par exemple, FILE* file = fopen("example.txt", "r"); ouvre un fichier en mode lecture seulement.
- Provenance et inclusion : fopen est une fonction de la bibliothèque standard du C, incluse dans l'entête <cstdio> en C++. Son utilisation est donc compatible avec le C, mais en C++ moderne, il est généralement recommandé d'utiliser les classes std::ifstream, std::ofstream et std::fstream de <fstream>.
- Modes d'ouverture : fopen accepte divers modes d'ouverture sous forme de chaînes de caractères : "r" (lecture seule), "w" (écriture, écrase le fichier s'il existe), "a" (ajout à la fin), "rb", "wb", "ab" (modes binaires), et des combinaisons comme "r+", "w+", "a+" pour autoriser lecture et écriture.
- Retour et gestion des erreurs : Si l'ouverture du fichier échoue (par exemple, si le fichier n'existe pas en mode "r"), fopen retourne nullptr. Il est donc essentiel de toujours vérifier le retour avant d'utiliser le fichier :
- Fermeture avec fclose : Un fichier ouvert avec fopen doit être fermé avec fclose(FILE*) pour libérer les ressources. Oublier fclose peut entraîner des fuites de mémoire et des fichiers corrompus si des données ne sont pas correctement écrites avant la fermeture du programme.
- Incompatibilité avec la programmation orientée objet : fopen ne s'intègre pas bien avec la gestion automatique des ressources (RAII) en C++. Les flux de la bibliothèque <fstream> sont préférables, car ils ferment automatiquement les fichiers lorsqu'ils sortent du champ d'application.
- Accès aux fichiers binaires : fopen peut ouvrir des fichiers en mode binaire ("rb", "wb", "ab") pour lire ou écrire des données brutes sans conversion de caractères. Ceci est crucial sous Windows, où les fichiers texte peuvent subir une transformation des caractères \n en \r\n.
- Performance et mise en mémoire tampon : fopen utilise un mécanisme de mise en mémoire tampon pour améliorer les performances des lectures et écritures de fichiers. La fonction setvbuf permet d'ajuster ou de désactiver ce tampon pour optimiser les accès aux fichiers en fonction des besoins spécifiques du programme.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :

Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - fclose
Langage de programmation - C++ - Référence de procédures et fonctions - fseek
Langage de programmation - C++ - Référence de procédures et fonctions - fread
Langage de programmation - C++ - Référence de procédures et fonctions - fwrite
Langage de programmation - C++ - Référence de procédures et fonctions - getc
Langage de programmation - C++ - Référence de procédures et fonctions - putc
Langage de programmation - C - Référence de procédures et fonctions - fopen
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 107.