setbuf(3S) setbuf(3S)
NAME
setbuf, setvbuf - assign buffering to a stream
SYNOPSIS
#include <stdio.h>
void setbuf(FILE *stream, char *buf);
int setvbuf(FILE *stream, char *buf, int type, sizet size);
DESCRIPTION
setbuf() may be used after a stream has been opened but before it is
read or written. It causes the array pointed to by buf to be used
instead of an automatically allocated buffer. If buf is the null
pointer, input/output will be completely unbuffered.
The buffer size is not limited; however, the constant BUFSIZ, defined
in the stdio.h header file, is typically a good buffer size:
char buf[BUFSIZ];
setvbuf() may be used after a stream has been opened but before it is
read or written. type determines how stream will be buffered. The
meanings of the permissible values for type (defined in stdio.h) are:
IOFBF Full buffering of the input/output
IOLBF Output is line buffered; the buffer will be flushed when a
newline is written, the buffer is full, or input is
requested.
IONBF Input/output is completely unbuffered.
If buf is not the null pointer, the array it points to will be used
for buffering, instead of an automatically allocated buffer. size
specifies the size of the buffer to be used. If input/output is unbuf-
fered, buf and size are ignored.
RESULT
If an illegal value for type is provided, setbuf() returns a non-zero
value. Otherwise, it returns zero.
NOTES
A common source of error is allocating buffer space as an auto vari-
able in a code block, and then failing to close the stream in the same
block.
Parts of buf will be used for internal bookkeeping of the stream and,
therefore, buf will contain less than size bytes when full. When using
setbuf(), the automatically allocated buffer should be used.
Page 1 Reliant UNIX 5.44 Printed 11/98
setbuf(3S) setbuf(3S)
SEE ALSO
malloc(3C), fopen(3S), getc(3S), putc(3S), stdio(3S), stdio(5).
Page 2 Reliant UNIX 5.44 Printed 11/98