NAME | SYNOPSIS | DESCRIPTION | NOTE | RETURN VALUES | ATTRIBUTES | SEE ALSO
#include <stdio.h>void setbuf(FILE * stream, char * buf);
The setbuf function can be used after a stream has been opened but before it is read from or written to. It causes the array pointed to by buf to be used instead of an automatically allocated buffer. If buf is a NULL pointer, input and output will be completely unbuffered.
A constant BUFSIZ , defined in the <stdio.h> header file, defines how big an array is needed:
char buf[BUFSIZ];
The setvbuf function can be used after a stream has been opened but before it is read from or written to. The type parameter determines how stream will be buffered. Legal values for type (defined in stdio.h) are:
Causes input and output to be fully buffered.
Causes output to be line buffered; the buffer will be flushed when a newline is written, the buffer is full, or input is requested.
Causes input and output to be completely unbuffered.
If buf is not a NULL pointer, the array it points to will be used for buffering, instead of an automatically allocated buffer. The size parameter specifies the size of the buffer to be used. The BUFSIZ constant in <stdio.h> is a recommended buffer size. If input and output are unbuffered, buf and size are ignored.
Output streams directed to terminals are always line-buffered (unless they are unbuffered).
A common source of error is allocating buffer space as an ``automatic'' variable in a code block, and then failing to close the stream in the same block.
If an illegal value for type is provided, setvbuf returns a non-zero value. Otherwise, it returns 0.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | DESCRIPTION | NOTE | RETURN VALUES | ATTRIBUTES | SEE ALSO