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