Share via


setvbuf

Almacenamiento en búfer y el tamaño de búfer de la secuencia de Controles.

int setvbuf(
   FILE *stream,
   char *buffer,
   int mode,
   size_t size 
);

Parámetros

  • stream
    puntero a la estructura de FILE .

  • buffer
    búfer Usuario-afectado asignado.

  • mode
    modo de almacenamiento en búfer.

  • size
    tamaño de búfer en bytes.El intervalo permitido: 2 <= size <= INT_MAX (2147483647).Internamente, el valor proporcionado para size se redondea hacia abajo al múltiplo más cercano de 2.

Valor devuelto

devuelve 0 si correctamente.

Si stream es NULL, o si mode o size no está dentro de un cambio válido, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, esta función devuelve -1 y establece errno a EINVAL.

Para obtener información sobre éstos y otros códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Comentarios

La función de setvbuf permite que el programa controle el búfer y el tamaño de búfer para stream.stream debe hacer referencia a un archivo abierto que no ha superado una operación de E/S desde que se abrió.La matriz indicada por buffer se utiliza como el búfer, a menos que sea NULL, en este caso setvbuf utiliza un búfer automáticamente asignado de longitud size/2 * 2 bytes.

el modo debe ser _IOFBF, _IOLBF, o _IONBF.Si mode es _IOFBF o _IOLBF, después size se utiliza como el tamaño del búfer.Si mode es _IONBF, la secuencia se inseparada y se omiten size y buffer .los valores para mode y sus significados son:

  • _IOFBF
    almacenamiento en búfer completo; es decir, buffer se utiliza como el búfer y size se utiliza como el tamaño del búfer.Si buffer es NULL, bytes automáticamente asignados de size de un búfer se utilizan de longitud.

  • _IOLBF
    Para algunos sistemas, proporciona el búfer de la línea.Sin embargo, para Win32, el comportamiento es igual que _IOFBF - búfer completo.

  • _IONBF
    No se utiliza ningún búfer, independientemente buffer o size.

Requisitos

rutina

Encabezado necesario

setvbuf

<stdio.h>

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

bibliotecas

todas las versiones de Bibliotecas en tiempo de ejecución de C.

Ejemplo

// crt_setvbuf.c
// This program opens two streams: stream1
// and stream2. It then uses setvbuf to give stream1 a
// user-defined buffer of 1024 bytes and stream2 no buffer.
//

#include <stdio.h>

int main( void )
{
   char buf[1024];
   FILE *stream1, *stream2;

   if( fopen_s( &stream1, "data1", "a" ) == 0 &&
       fopen_s( &stream2, "data2", "w" ) == 0 )
   {
      if( setvbuf( stream1, buf, _IOFBF, sizeof( buf ) ) != 0 )
         printf( "Incorrect type or size of buffer for stream1\n" );
      else
         printf( "'stream1' now has a buffer of 1024 bytes\n" );
      if( setvbuf( stream2, NULL, _IONBF, 0 ) != 0 )
         printf( "Incorrect type or size of buffer for stream2\n" );
      else
         printf( "'stream2' now has no buffer\n" );
      _fcloseall();
   }
}
  

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Vea también

Referencia

E/S de la secuencia

fclose, _fcloseall

fflush

fopen, _wfopen

setbuf