다음을 통해 공유


setbuf

스트림 버퍼링을 제어합니다. 이 함수는 사용되지 않습니다. 대신 setvbuf 를 사용하십시오.

구문

void setbuf(
   FILE *stream,
   char *buffer
);

매개 변수

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

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

설명

setbuf 함수는 stream에 대한 버퍼링을 제어합니다. 인수는 stream 읽거나 쓰지 않은 열린 파일을 참조해야 합니다. 인수가 buffer NULL있으면 스트림이 버퍼되지 않습니다. 그렇지 않은 경우 버퍼는 길이가 BUFSIZ인 문자 배열을 가리켜야 합니다. 여기서 BUFSIZ는 STDIO.H에 정의된 대로 버퍼 크기입니다. 지정된 스트림에 대한 기본 시스템 할당 버퍼 대신 사용자 지정 버퍼가 I/O 버퍼링에 사용됩니다. 스트림은 stderr 기본적으로 버퍼링되지 않지만 버퍼를 할당하는 stderr데 사용할 setbuf 수 있습니다.

setbuf 는 새 코드의 기본 루틴인 로 대체 setvbuf되었습니다. 와 setbuf 달리 setvbuf오류를 보고할 방법이 없습니다. setvbuf 또한 버퍼링 모드와 버퍼 크기를 모두 제어할 수 있습니다. setbuf 기존 코드와의 호환성을 위해 존재합니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
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();
   }
}
stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled

참고 항목

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