setvbuf

 

Visual Studio 2017 에 대한 최신 설명서는 Visual Studio 2017 설명서를 참조하세요.

스트림 버퍼링 및 버퍼 크기를 제어합니다.

int setvbuf(  
   FILE *stream,  
   char *buffer,  
   int mode,  
   size_t size   
);  

매개 변수

stream
FILE 구조체에 대한 포인터입니다.

buffer
사용자가 할당한 버퍼입니다.

mode
버퍼링 모드입니다.

size
버퍼 크기 (바이트)에서입니다. 허용 범위: 2 <=></=> size<= INT_MAX (2147483647). int_max=""></= INT_MAX (2147483647).> 에 대 한 제공 된 값은 내부적으로 size 2의 가장 가까운 배수로 내림 합니다.

성공 하면 0을 반환 합니다.

경우 streamNULL, if 또는 mode 또는 size 은 올바른 변경 내용, 내에서 잘못 된 매개 변수 처리기가 호출 되지에 설명 된 대로 매개 변수 유효성 검사합니다. 계속해서 실행하도록 허용된 경우 이 함수는 -1을 반환하고 errnoEINVAL로 설정합니다.

이러한 코드 및 기타 오류 코드에 대 한 자세한 내용은 참조 _doserrno, errno, _sys_errlist 및 _sys_nerr합니다.

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

모드 여야 _IOFBF, _IOLBF, 또는 _IONBF합니다. 경우 mode_IOFBF 또는 _IOLBF, 다음 size 버퍼의 크기로 사용 됩니다. 경우 mode_IONBF, 스트림이 버퍼링 및 sizebuffer 무시 됩니다. 에 대 한 값 mode 는 해당 의미 하 고 있습니다.

_IOFBF
전체 버퍼링 합니다. 즉, buffer 버퍼 사용 및 size 버퍼의 크기로 사용 됩니다. 경우 bufferNULL, 자동으로 할당 된 버퍼는 size 바이트 길이의 사용 됩니다.

_IOLBF
일부 시스템에서는이 줄 버퍼링 제공합니다. 그러나 Win32에 대 한 동작은 동일 _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();  
   }  
}  

'stream1' now has a buffer of 1024 bytes  
'stream2' now has no buffer  

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제를 참조하십시오.

스트림 I/O
fclose, _fcloseall
fflush
fopen, _wfopen
setbuf

표시: