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.