Поделиться через


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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Потоковый ввод-вывод

fclose, _fcloseall

fflush

fopen, _wfopen

setvbuf