setbuf(3S) STANDARD I/O FUNCTIONS 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, size_t
size);
DESCRIPTION
setbuf may be used after a stream [see intro(3)] has been
opened but before it is read or written. It causes the
array pointed to by buf to be used instead of an automati-
cally allocated buffer. If buf is the NULL pointer
input/output will be completely unbuffered.
While there is no limititation on the size of the buffer,
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. Legal values for type (defined in
stdio.h) are:
_IOFBF causes input/output to be fully buffered.
_IOLBF causes output to be line buffered; the buffer
will be flushed when a newline is written, the
buffer is full, or input is requested.
_IONBF causes input/output to be 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 speci-
fies the size of the buffer to be used. If
input/output is unbuffered, buf and size are
ignored. For a further discussion of buffering,
see stdio(3S).
SEE ALSO
fopen(3S), getc(3S), malloc(3C), putc(3S), stdio(3S).
DIAGNOSTICS
If an illegal value for type is provided, setvbuf returns a
non-zero value. Otherwise, it returns zero.
NOTES
A common source of error is allocating buffer space as an
Last change: C Programming Language Utilities 1
setbuf(3S) STANDARD I/O FUNCTIONS setbuf(3S)
``automatic'' variable 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. It is recommended that the automatically allo-
cated buffer is used when using setvbuf.
Last change: C Programming Language Utilities 2