title | ms.custom | ms.date | ms.reviewer | ms.suite | ms.technology | ms.tgt_pltfrm | ms.topic | apiname | apilocation | apitype | f1_keywords | dev_langs | helpviewer_keywords | ms.assetid | caps.latest.revision | author | ms.author | manager | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
setbuf | Microsoft Docs |
11/04/2016 |
|
article |
|
|
DLLExport |
|
|
|
13beda22-7b56-455d-8a6c-f2eb636885b9 |
16 |
corob-msft |
corob |
ghogen |
Controls stream buffering. This function is deprecated; use setvbuf instead.
void setbuf(
FILE *stream,
char *buffer
);
stream
Pointer to FILE
structure.
buffer
User-allocated buffer.
The setbuf
function controls buffering for stream
. The stream
argument must refer to an open file that has not been read or written. If the buffer
argument is NULL
, the stream is un-buffered. If not, the buffer must point to a character array of length BUFSIZ
, where BUFSIZ
is the buffer size as defined in STDIO.H. The user-specified buffer, instead of the default system-allocated buffer for the given stream, is used for I/O buffering. The stderr
stream is un-buffered by default, but you can use setbuf
to assign buffers to stderr
.
setbuf
has been replaced by setvbuf, which is the preferred routine for new code. setbuf
is retained for compatibility with existing code.
Routine | Required header |
---|---|
setbuf |
<stdio.h> |
For additional compatibility information, see Compatibility in the Introduction.
// 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