fflush
vide un flux de données.
int fflush(
FILE *stream
);
Paramètres
- stream
Pointeur vers la structure d' FILE .
Valeur de retour
fflush retourne 0 si la mémoire tampon a été correctement vidée.La valeur 0 est également retourné dans les cas où le flux de données spécifié ne contient aucune mémoire tampon ou est ouverte uniquement pour la lecture.une valeur de retour d' EOF indique une erreur.
[!REMARQUE]
Si fflush retourne EOF, les données ont peut-être été perdues en raison d'un échec d'écriture.Configurez un gestionnaire d'erreur critique, il est plus prudent de désactiver la mise hors fonction avec la fonction d' setvbuf ou d'utiliser des routines de bas niveau d'E/S telles que _openen mémoire tampon, _close, et _write au lieu des fonctions E/S de flux de données.
Notes
la fonction d' fflush vide un flux de données.Si le fichier associé à stream est ouvert pour la sortie, fflush écrit dans ce fichier le contenu de la mémoire tampon associée au flux de données.Si le flux est ouvert pour l'entrée, fflush efface le contenu de la mémoire tampon.fflush annule l'effet de n'importe quel appel précédent à ungetc par rapport à stream.en outre, fflush(NULL) vide tous les flux de données ouverts pour la sortie.le flux de données reste ouvert après l'appel.fflush n'a aucun effet sur un flux de données non tamponné.
Les mémoires tampons sont normalement conservées par le système d'exploitation, qui détermine l'heure optimale d'écrire les données automatiquement au disque : lorsqu'une mémoire tampon est complète, lorsqu'un flux est fermé, ou lorsqu'un programme se termine normalement sans fermer le flux de données.La fonctionnalité validée sur disque de la bibliothèque Runtime vous permet de garantir que les données critique est écrite directement sur le disque plutôt qu'aux mémoires tampons du système d'exploitation.Sans réécrire un programme existant, vous pouvez l'activer en liant les fichiers objets du programme avec COMMODE.OBJ.Dans le fichier exécutable obtenu, les appels à _flushall écrivent le contenu de toutes les mémoires tampons sur le disque.Uniquement _flushall et fflush sont affectés par COMMODE.OBJ.
Pour plus d'informations sur contrôler la fonctionnalité validée sur disque, consultez E/S de flux de données, fopen, et le _fdopen.
Cette fonction verrouille le thread appelant elle n'est pas thread-safe.Pour une version non verrouillante, consultez l' _fflush_nolock.
Configuration requise
Fonction |
en-tête requis |
---|---|
fflush |
<stdio.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// crt_fflush.c
#include <stdio.h>
#include <conio.h>
int main( void )
{
int integer;
char string[81];
// Read each word as a string.
printf( "Enter a sentence of four words with scanf: " );
for( integer = 0; integer < 4; integer++ )
{
scanf_s( "%s", string, sizeof(string) );
printf( "%s\n", string );
}
// You must flush the input buffer before using gets.
// fflush on input stream is an extension to the C standard
fflush( stdin );
printf( "Enter the same sentence with gets: " );
gets_s( string, sizeof(string) );
printf( "%s\n", string );
}
Il s'agit d'un test Il s'agit des
testThis est un test Il s'agit d'un testEnter une phrase de quatre mots avec scanf : Il s'agit d'un test Cet objet . est a test Entrez la même phrase avec obtient : Il s'agit d'un test Il s'agit d'un test
Équivalent .NET Framework
System : : E/S : : FileStream : : Vide