Condividi tramite


fflush

Svuota un flusso.

int fflush( 
   FILE *stream 
);

Parametri

  • stream
    Puntatore alla struttura FILE.

Valore restituito

fflush restituisce 0 se il buffer è stato svuotato correttamente. Il valore 0 viene restituito anche nei casi in cui il flusso specificato non presenta buffer o è aperto in sola lettura. Un valore restituito EOF indica un errore.

Nota

Se fflush restituisce EOF, i dati possono venire persi a causa di un errore di scrittura.Quando si installa un gestore di errori critici, è consigliabile disattivare la memorizzazione nel buffer con la funzione setvbuf o utilizzare le routine di I/O di basso livello come _open, _close e _write anziché le funzioni del flusso di I/O.

Note

La funzione fflush svuota un flusso. Se il file associato a stream viene aperto per l'output, fflush scrive in questo file il contenuto del buffer associato al flusso. Se il flusso viene aperto per l'input, fflush elimina il contenuto del buffer. fflush annulla l'effetto di qualsiasi chiamata precedente a ungetc sullo stream. Inoltre, fflush(NULL) svuota tutti i flussi aperti per l'output. Il flusso rimane aperta dopo la chiamata. fflush non ha effetto su un flusso privo di buffer.

I buffer sono normalmente gestiti dal sistema operativo, il quale determina il momento ottimale per scrivere automaticamente i dati sul disco: quando un buffer è pieno, quando un flusso viene chiuso, o quando un programma termina normalmente senza chiudere il flusso. La funzionalità di commit su disco della libreria di run-time consente di assicurare che i dati critici vengano scritti direttamente su disco anziché nei buffer del sistema operativo. Senza riscrivere un programma esistente, è possibile abilitare questa funzionalità collegando i file oggetto del programma a COMMODE.OBJ. Nel file eseguibile risultante, le chiamate a _flushall scrivono il contenuto di qualsiasi buffer sul disco. Solo _flushall e fflush sono interessati da COMMODE.OBJ.

Per informazioni sul controllo della funzionalità del commit da disco, consultare Flusso I/O, fopen e _fdopen.

Questa funzione blocca il thread chiamante quindi è thread-safe. Per una versione non bloccante, vedere _fflush_nolock.

Requisiti

Funzione

Intestazione obbligatoria

fflush

<stdio.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'Introduzione.

Esempio

// 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

FakePre-13416639e6234b86847eb7deac5c26c8-395eabce0aa446118b27b18e7a11198b

Equivalente .NET Framework

System::IO::FileStream::Flush

Vedere anche

Riferimenti

I/O di flusso

fclose, _fcloseall

_flushall

setvbuf