Partager via


fflush

Vide un flux de données.

int fflush( 
   FILE *stream 
);

Paramètres

  • stream
    Pointeur vers la structure FILE.

Valeur de retour

fflush retourne 0 si la mémoire tampon a été vidée. La valeur 0 est également retournée dans les cas où le flux de données spécifié n'a aucune mémoire tampon ou est ouvert en lecture seule. Une valeur de retour de EOF indique une erreur.

Notes

Si fflush retourne EOF, les données peuvent avoir été perdues en raison d'une erreur d'écriture.En installant un gestionnaire d'erreurs critiques, il est plus sécurisé de désactiver la mise en mémoire tampon avec la fonction setvbuf ou d'utiliser les routines de bas niveau d'E/S telles que _open _close, et _write au lieu des fonctions d'E/S de flux de données.

Notes

La fonction fflush vide un flux de données. Si le fichier associé à stream est ouvert pour la sortie, fflush écrit sur 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 inverse l'effet de tout appel antérieur à ungetc sur 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 pour écrire les données automatiquement sur le 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. 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 que sur les mémoires tampons du système d'exploitation. Sans réécrire un programme existant, vous pouvez activer cette fonctionnalité en liant les fichiers objets du programme avec COMMODE.OBJ. Dans le fichier exécutable obtenu, les appels à _flushall lisent le contenu de toutes les mémoires tampons sur le disque. Seuls _flushall et fflush sont affectés par COMMODE.OBJ.

Pour plus d'informations sur le contrôle de la fonctionnalité validée sur disque, consultez Flux E/S, fopen, et _fdopen.

Cette fonction verrouille le thread appelant et est par conséquent thread-safe. Pour une version non verrouillante, consultez _fflush_nolock.

Configuration requise

Fonction

En-tête requis

fflush

<stdio.h>

Pour plus d'informations sur la compatibilité, 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 d'un test

FakePre-13d1493f6b23470aac236c0581d4dbe5-afcd574a582444309eeadcbfb41476a7

Équivalent .NET Framework

System::IO::FileStream::Flush

Voir aussi

Référence

E/S de flux

fclose, _fcloseall

_flushall

setvbuf