fflush

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Vacía una secuencia.

int fflush(   
   FILE *stream   
);  

Parámetros

stream
Puntero a la estructura FILE .

fflushDevuelve 0 si el búfer se limpió correctamente. También se devuelve el valor 0 en los casos en que la secuencia especificada no tiene ningún búfer o está abierto sólo para lectura. Un valor devuelto de EOF indica un error.

System_CAPS_ICON_note.jpg Nota

Si fflush devuelve EOF, datos pueden haberse perdidos debido a un error de escritura. Al configurar un controlador de errores críticos, resulta más seguro desactivar el almacenamiento en búfer con el setvbuf (función) o utilizar rutinas de E/S de bajo nivel, como _open, _close, y _write en lugar de las funciones de E/S de secuencia.

El fflush función vacía la secuencia stream. Si se abrió la secuencia en escritura modo o se abrió en modo de actualización y la última operación fue una operación de escritura, el contenido del búfer de la secuencia se escribe en el archivo subyacente o el dispositivo y se descarta el búfer. Si el flujo se abre en modo de lectura, o si la secuencia no tiene ningún búfer, la llamada a fflush no tiene ningún efecto y se conserva cualquier búfer. Una llamada a fflush anula el efecto de las llamadas anteriores a ungetc para la secuencia. La secuencia permanece abierta después de la llamada.

Si stream es NULL, el comportamiento es el mismo que una llamada a fflush en cada secuencia abierta. Todas las secuencias que se abre en modo de escritura y se vacían todas las secuencias abiertas en modo de actualización que la última operación era una operación de escritura. La llamada no tiene ningún efecto en otras secuencias.

El sistema operativo, que determina el momento óptimo para escribir los datos automáticamente en el disco normalmente mantiene los búferes: cuando el búfer está lleno, cuando se cierra un flujo o cuando un programa finaliza con normalidad sin cerrar la secuencia. La característica de confirmación en disco de la biblioteca de tiempo de ejecución permite asegurarse de que los datos críticos se escriben directamente en el disco, en lugar de en los búferes del sistema operativo. Sin volver a escribir un programa existente, puede habilitar esta característica vinculando los archivos de objeto del programa a COMMODE.OBJ. En el archivo ejecutable resultante, las llamadas a _flushall escriben el contenido de todos los búferes en el disco. Sólo _flushall y fflush se ven afectados por COMMODE.OBJ.

Para obtener información acerca de cómo controlar la característica de confirmación en disco, consulte secuencia de E/S, fopen, y _fdopen.

Esta función bloquea el subproceso de llamada y, por tanto, es seguro para subprocesos. Para consultar una versión que no realiza el bloqueo, vea _fflush_nolock.

FunciónEncabezado necesario
fflush<stdio.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

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

E/S de secuencia
fclose, _fcloseall
_flushall
setvbuf)

Mostrar: