setbuf -- Control Buffering

Format

#include <stdio.h>
void setbuf(FILE *stream, char *buffer);

Language Level: ANSI, POSIX, XPG4
setbuf controls buffering for the specified stream.

If the buffer argument is NULL, the stream is unbuffered. If not, the buffer must point to a character array of length BUFSIZ, which is the buffer size defined in the <stdio.h> include file. The system uses the buffer, which you specify, for input/output buffering instead of the default system-allocated buffer for the given stream.

setbuf is similar to setvbuf, however setvbuf is more flexible and may supercede setbuf in the future.

Note: Streams are fully buffered by default, with the exceptions of stderr, which is line-buffered, and memory files, which are unbuffered.

Return Value
There is no return value.

Example
This example opens the file setbuf.dat for writing. It then calls setbuf to establish a buffer of length BUFSIZ. When string is written to the stream, the buffer buf is used and contains the string before it is flushed to the file.

#include <stdio.h>
#include <string.h>
int main(void)
{
   char buf[BUFSIZ];
   char string[] = "hello world";
   FILE *stream;
   memset(buf,'\0',BUFSIZ);  /* initialize buf to null characters */
   stream = fopen("FILENAME", "wb");
   setbuf(stream, buf);      /* set up buffer */
   fwrite(string, sizeof(string), 1, stream);
   printf("%s\n", buf);      /* string is found in buf now */
   fclose(stream);           /* buffer is flushed out to output stream */
   return 0;
   /*********************************************************************
      The output file should contain:
      hello world
      The output should be:
      hello world
   *********************************************************************/
}


fclose -- Close Stream
fflush -- Write Buffer to File
_flushall -- Write Buffers to Files
fopen -- Open Files
setvbuf -- Control Buffering
<stdio.h>