fflush

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Vide un flux de données.

int fflush(   
   FILE *stream   
);  

Paramètres

stream
Pointeur vers la structure FILE .

fflushretourne 0 si la mémoire tampon a bien été vidée. La valeur 0 est également retournée dans les cas dans lequel 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.

System_CAPS_ICON_note.jpg Remarque

Si fflush retourne EOF, données ont peut-être été perdues en raison d’un échec d’écriture. Lorsque vous configurez un gestionnaire d’erreurs critiques, il est plus sûr de désactiver la mise en mémoire tampon avec la setvbuf (fonction) ou utiliser les routines d’e/s niveau bas comme _open, _close, et _write au lieu des fonctions de flux d’e/s.

Le fflush fonction vide le flux stream. Si le flux a été ouvert en écriture, ou a été ouvert en mode de mise à jour et la dernière opération a été une écriture, le contenu de la mémoire tampon du flux est écrites dans le fichier sous-jacent ou le périphérique et la mémoire tampon est ignorée. Si le flux a été ouvert en mode lecture, ou si le flux n’a pas de tampon, l’appel à fflush n’a aucun effet, et une mémoire tampon est conservée. Un appel à fflush annule l’effet d’un appel antérieur à ungetc pour le flux. Le flux de données reste ouverte après l’appel.

Si stream est NULL, le comportement est identique à un appel à fflush sur chaque flux ouvert. Tous les flux ouvert en mode écriture et tous les flux ouverts en mode de mise à jour où la dernière opération a été une écriture sont vidés. L’appel n’a aucun effet sur les autres flux.

Mémoires tampons sont normalement gérées par le système d’exploitation, qui détermine le délai optimal pour écrire les données automatiquement sur le disque : lorsque une mémoire tampon est saturée, lorsqu’un flux est fermé ou lorsqu’un programme se termine normalement sans avoir à fermer le flux de données. La fonctionnalité de validation sur disque de la bibliothèque d’exécution vous permet de vous assurer que les données critiques sont écrites directement sur le disque plutôt que dans les tampons du système d’exploitation. Sans le réécrire un programme existant, vous pouvez activer cette fonctionnalité en liant les fichiers d’objets du programme avec COMMODE.OBJ. Dans le fichier exécutable résultant, les appels à _flushall écrire le contenu de toutes les mémoires tampons sur le disque. Seuls _flushall et fflush sont affectées par COMMODE.OBJ.

Pour plus d’informations sur le contrôle de la fonctionnalité de validation sur disque, voir e/s de flux, fopen, et _fdopen.

Cette fonction verrouille le thread appelant et est par conséquent thread-safe. Pour une version sans verrouillage, voir _fflush_nolock.

FonctionEn-tête requis
fflush<stdio.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

// 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 );  
}  

  
      This is a test  
This is a test  
  

  
      This is a test  
This is a testEnter a sentence of four words with scanf: This is a test  
This  
is  
a  
test  
Enter the same sentence with gets: This is a test  
This is a test  

System::IO::FileStream::Flush

Flux d’e/s
fclose, _fcloseall
_flushall
setvbuf

Afficher: