fflush

Vacía una secuencia.

int fflush( 
   FILE *stream 
);

Parámetros

  • stream
    puntero a la estructura de FILE .

Valor devuelto

fflush devuelve 0 si el búfer se vaciado correctamente.El valor 0 también se devuelve en casos en los que la secuencia especificada no tiene ningún búfer o está abierto para lectura únicamente.un valor devuelto de EOF indica un error.

[!NOTA]

Si fflush devuelve EOF, los datos podrían haber perdido debido a un error de escritura.Al configurar un controlador de error crítico, resulta más seguro activar el almacenamiento en búfer desactivado con la función de setvbuf o utilizar las rutinas de E/S de bajo nivel como _open, _close, y _write en lugar de E/S de secuencia funciona.

Comentarios

La función de fflush vacía una secuencia.Si el archivo asociado a stream está abierto para la salida, fflush escribe en ese archivo el contenido del búfer asociado a la secuencia.Si la secuencia está abierto para la entrada, fflush borra el contenido del búfer.fflush anula el efecto de cualquier llamada anterior a ungetc con stream.Además, fflush(NULL) vacía todas las secuencias abierto para la salida.La secuencia permanece abierto después de la llamada.fflush no tiene ningún efecto en una secuencia inseparada.

Los búferes son mantenidas normalmente por el sistema operativo, que determina el tiempo óptima de escribir los datos automáticamente en disco: cuando el búfer está lleno, cuando se cierra una secuencia, o cuando un programa finaliza normalmente sin cerrar la secuencia.La característica de confirmación-a-disco de la biblioteca en tiempo de ejecución permite asegurarse que los datos crítico se escribe directamente en el disco y no a los búferes del sistema operativo.Sin volver a escribir un programa existente, puede habilitar esta característica vincular los archivos objeto program con 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 afectados por COMMODE.OBJ.

Para obtener información sobre cómo controlar la característica de confirmación-a-disco, vea E/S de la secuencia, fopen, y _fdopen.

Esta función bloquea el subproceso de la llamada y por consiguiente seguro para subprocesos.Para una versión de modificación limitada de interpretación, vea _fflush_nolock.

Requisitos

Función

Encabezado necesario

fflush

<stdio.h>

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

Ejemplo

// 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 );
}
  esto es una prueba
Este es el testThis
   es una prueba
Esto es un testEnter
 a la frase de cuatro palabras con scanf: esto es una prueba
Este objeto .
es
a
test
Escriba la misma frase con obtiene: esto es una prueba
esto es una prueba

Equivalente en .NET Framework

System:: IO:: secuencia de archivo:: Vaciado

Vea también

Referencia

E/S de la secuencia

fclose, _fcloseall

_flushall

setvbuf