setbuf
Контролирует потоковую буферизацию. Эта функция не рекомендуется; вместо неё используйте setvbuf.
void setbuf(
FILE *stream,
char *buffer
);
Параметры
stream
Указатель на структуру FILE.buffer
Выделенный пользователем буфер.
Заметки
Функция setbuf управляет буферизацией для stream. Аргумент stream должен относиться к открытому файлов, в котором не производились чтение и запись. Если аргумент buffer равен NULL, поток не буферизуется. В противном случае буфер должен указывать на массив символов длиной BUFSIZ, где BUFSIZ - размер буфера, как определено в STDIO.H. Вместо буфера по умолчанию выделенного системой для данного потока для буферизации ввода/вывода используется указанный пользователем буфер. Поток stderr не буферизуется по умолчанию, но можно использовать setbuf, чтобы назначить буферы в stderr.
setbuf заменена setvbuf, которая является предпочтительной процедурой для нового кода. setbuf сохраняется для обеспечения совместимости с существующим кодом.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
setbuf |
<stdio.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Пример
// crt_setbuf.c
// compile with: /W3
// This program first opens files named DATA1 and
// DATA2. Then it uses setbuf to give DATA1 a user-assigned
// buffer and to change DATA2 so that it has no buffer.
#include <stdio.h>
int main( void )
{
char buf[BUFSIZ];
FILE *stream1, *stream2;
fopen_s( &stream1, "data1", "a" );
fopen_s( &stream2, "data2", "w" );
if( (stream1 != NULL) && (stream2 != NULL) )
{
// "stream1" uses user-assigned buffer:
setbuf( stream1, buf ); // C4996
// Note: setbuf is deprecated; consider using setvbuf instead
printf( "stream1 set to user-defined buffer at: %Fp\n", buf );
// "stream2" is unbuffered
setbuf( stream2, NULL ); // C4996
printf( "stream2 buffering disabled\n" );
_fcloseall();
}
}
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.