4BSD/usr/man/man3/setbuf.3s

.TH SETBUF 3S 
.UC 4
.SH NAME
setbuf \- assign buffering to a stream
.SH SYNOPSIS
.B #include <stdio.h>
.PP
.B setbuf(stream, buf)
.br
.SM
.B FILE
.B *stream;
.br
.B char *buf;
.SH DESCRIPTION
.I Setbuf
is used after a stream has been opened but before it
is read or written.
It causes the character array
.I buf
to be used instead of an automatically allocated buffer.
If
.I buf
is the constant pointer
.SM
.B NULL,
input/output will be completely unbuffered.
.PP
A manifest constant 
.SM
.B BUFSIZ
tells how big an array is needed:
.IP
.B char
buf[BUFSIZ];
.PP
A buffer is normally obtained from
.IR  malloc (3)
upon the first
.I getc
or
.IR  putc (3)
on the file,
except that the standard output is line buffered when directed to a terminal.
Other output streams directed to terminals,
and the standard error stream
.I stderr
are normally not buffered.
If the standard output is line buffered, then it is flushed each time
data is read from the standard input by
.IR read (2).
.SH "SEE ALSO"
fopen(3), getc(3), putc(3), malloc(3)
.SH BUGS
The standard error stream should be line buffered by default.