6.18.41 setbuf Function

Defines how a stream is buffered.

Attention: This function is not implemented by MPLAB XC8.

Include

<stdio.h>

Prototype

void setbuf(FILE * restrict stream, char * restrict buf);

Arguments

stream
pointer to the open stream
buf
user allocated buffer

Remarks

The setbuf function must be called after fopen but before any other function calls that operate on the stream. If buf is a null pointer, setbuf calls the function setvbuf(stream, 0, _IONBF, BUFSIZ) for no buffering; otherwise setbuf calls setvbuf(stream, buf, _IOFBF, BUFSIZ) for full buffering with a buffer of size BUFSIZ. See setvbuf.

When building with MPLAB XC16 or XC-DSC, this function requires a heap.

Example

#include <stdio.h>

int main(void)
{
  FILE *myfile1, *myfile2;
  char buf[BUFSIZ];

  if ((myfile1 = fopen("afile1", "w+")) != NULL)
  {
    setbuf(myfile1, NULL);
    printf("myfile1 has no buffering\n");
    fclose(myfile1);
  }

  if ((myfile2 = fopen("afile2", "w+")) != NULL)
  {
    setbuf(myfile2, buf);
    printf("myfile2 has full buffering");
    fclose(myfile2);
  }

}

Example Output

myfile1 has no buffering
myfile2 has full buffering

This macro is used by the function setbuf.