setvbuf
Буферизация и размера буфера потока элементов управления.
int setvbuf(
FILE *stream,
char *buffer,
int mode,
size_t size
);
Параметры
stream
Указатель на FILE структура.buffer
Пользователь-выделенный буфер.mode
Режим буферизации.size
Размер буфера в байтах.Допустимый диапазон: 2 <= size <= INT_MAX (2147483647).Значение, заданное для внутреннего использования size округляет вниз до ближайшего числа, кратного 2.
Возвращаемое значение
Возвращает 0 в случае успешного выполнения.
If stream существует NULLили mode OR size выходит за рамки допустимого изменение параметра недопустимый обработчик вызывается, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то эта функция возвращает -1 и присваивает errno В EINVAL.
Дополнительные сведения об этих и других кодах ошибок см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.
Заметки
setvbuf функция позволяет программа для наблюдения и буферизации и размера буфера для stream.stream обратиться к открытому файлу, который не прошел операции ввода-вывода, поскольку она открыта.Массив указанный к которым следуют buffer используется как буфер, если он не будет NULLв этом случае setvbuf использует автоматически выделенный буфер длины size/2 * 2 байт.
Режим должен иметь _IOFBF" _IOLBFили _IONBF.If mode существует _IOFBF OR _IOLBFпосле этого size использует в качестве размера буфера.If mode существует _IONBFпоток и небуферизованный size и buffer пропустить.Значения mode и их значения:
_IOFBF
Полной буферизации. то есть buffer используется как буфер и size использует в качестве размера буфера.If buffer существует NULLавтоматически выделенный буфер size в байтах длиной используются._IOLBF
Для некоторых систем, при этом буферизация линии.Однако для Win32, реакция на событие одинаково как _IOFBF - Полной буферизации._IONBF
Ни один буфер не используется независимо от buffer OR size.
Требования
Процедура |
Обязательный заголовок |
---|---|
setvbuf |
<stdio.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
Библиотеки
Все версии Библиотеки времени выполнения C.
Пример
// 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();
}
}
Эквивалент в .NET Framework
Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.