FFLUSH |
Vide le fichier |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int fflush(FILE *ptrfichier); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
Description
Cette fonction vide le tampon du fichier.
Remarques
- Définition et utilité : La fonction fflush en C++ est utilisée pour vider (ou "flusher") le tampon de sortie d'un flux. Elle force l'écriture des données tamponnées dans le fichier ou le périphérique de sortie. Cette fonction est particulièrement utile lorsqu'on travaille avec des fichiers ouverts en mode texte ou binaire et que l'on souhaite s'assurer que les données tamponnées sont réellement écrites sur disque ou envoyées à un autre périphérique.
- Utilisation pour garantir l'écriture des données : Par défaut, les opérations d'écriture dans les fichiers en C++ peuvent être tamponnées. Cela signifie que les données peuvent être conservées dans un tampon en mémoire avant d'être réellement écrites sur le disque. L'appel à fflush permet de forcer l'écriture immédiate des données tamponnées, ce qui est utile, par exemple, pour enregistrer des informations critiques avant de quitter le programme ou pour s'assurer que les données sont visibles pour d'autres processus.
- Comportement en cas d'erreur : Si fflush échoue pour une raison quelconque (par exemple, une erreur matérielle ou une panne du disque), elle renverra EOF pour indiquer que l'écriture n'a pas été effectuée correctement. Il est donc essentiel de vérifier la valeur retournée par fflush afin de détecter et gérer les erreurs d'écriture.
- Utilisation avec des flux de sortie standard : fflush est fréquemment utilisée avec les flux standard de sortie (stdout) pour s'assurer que toutes les données tamponnées sont envoyées à l'écran ou à un fichier. Par exemple, lorsqu'un programme utilise printf ou d'autres fonctions d'écriture, il peut être nécessaire d'utiliser fflush(stdout) pour garantir que la sortie est immédiatement visible :
- Vidages des fichiers en mode lecture : Bien que fflush soit principalement utilisée pour vider les tampons de sortie, elle peut également être utilisée pour les flux en mode lecture (stdin). Cependant, il est moins courant d'utiliser fflush sur des flux en lecture, car la fonction a un comportement indéfini lorsqu'elle est utilisée sur un flux d'entrée (ce n'est pas le cas dans tous les environnements C/C++).
- Impact sur les performances : L'utilisation fréquente de fflush peut avoir un impact sur les performances, car elle oblige le programme à écrire les données dans le fichier ou le périphérique de sortie à chaque appel. Dans des programmes où la vitesse d'exécution est critique, il est donc important de n'utiliser fflush que lorsque cela est nécessaire, comme lors de l'enregistrement de données importantes ou lors de la gestion des erreurs.
- Portabilité et compatibilité : fflush fait partie de la bibliothèque standard C et est largement supportée dans la plupart des implémentations C++. Cependant, son comportement peut légèrement varier selon les systèmes d'exploitation, notamment en ce qui concerne la gestion des flux ou des périphériques. En C++, si l'on utilise des objets comme std::ofstream ou std::ofstream pour la gestion des fichiers, il existe des méthodes alternatives pour s'assurer que les données sont écrites immédiatement, telles que l'appel à flush() sur l'objet de flux.
Cela est particulièrement important dans des environnements où l'affichage immédiat est nécessaire, comme dans les applications interactives.
Exemple
Voici un exemple permettant de vider les caractères contenu dans le tampon clavier avec de demander de poser une question :

on obtiendra le résultat suivant :
Vide le tampon clavier avant de poser la questionEntrer une votre message :
Voir également
Langage de programmation - C++ - Référence procédures et fonctions - fclose
Langage de programmation - C - Référence procédures et fonctions - fflush
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 97.
Dernière mise à jour : Lundi, le 3 août 2015