다음을 통해 공유


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을 반환 합니다.

경우 stream 입니다 NULL, 또는 mode 또는 size 되지 않습니다 잘못 변경 내에서 잘못 된 매개 변수 처리기를의 설명에 따라 호출 됩니다 매개 변수 유효성 검사.실행을 계속 하려면이 함수는-1 반환 하 고 설정 수 있으면 errno 에 EINVAL.

이러한 문제 및 기타 오류 코드에 대 한 내용은 _doserrno, errno, _sys_errlist, 및 _sys_nerr.

설명

setvbuf 함수에서 프로그램 모두 버퍼링을 제어 하 고 버퍼의 크기가 수 있습니다 stream.stream열려 있었기 때문에 I/O 작업을 상태로 되었습니다 열린 파일을 참조 해야 합니다.에 배열을 가리키는 의해 buffer 이 아니라면 버퍼를 사용 NULL, 그 경우에 setvbuf 가 자동으로 할당 된 버퍼의 길이 사용 하 여 size/2 * 2 바이트입니다.

The mode must be _IOFBF, _IOLBF, or _IONBF.경우 mode 입니다 _IOFBF 또는 _IOLBF, 다음 size 버퍼 크기가 사용 됩니다.경우 mode 입니다 _IONBF, 스트림 버퍼링 된지 않습니다 및 size 및 buffer 는 무시 됩니다.에 대 한 값 mode 와 그 의미는.

  • _IOFBF
    전체를 버퍼링 합니다. 즉, buffer 버퍼를 사용 하 고 size 버퍼 크기로 사용 됩니다.경우 buffer 입니다 NULL, 자동으로 할당 된 버퍼는 size 바이트를 사용 합니다.

  • _IOLBF
    일부 시스템에 대 한이 행 버퍼링을 제공합니다.단, w i n 32에 대 한 동작을 동일 _IOFBF -전체를 버퍼링 합니다.

  • _IONBF
    버퍼 없음입니다 사용 하는에 관계 없이 buffer 또는 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. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

스트림 I/O

fclose, _fcloseall

fflush

통해, _wfopen

setbuf