6.18.42 setvbuf Function
Defines the stream to be buffered and the buffer size.
Include
<stdio.h>
Prototype
int setvbuf(FILE * restrict stream, char * restrict buf, int
mode, size_t size);
Arguments
stream
- pointer to the open stream
buf
- user allocated buffer
mode
- type of buffering
size
- size of buffer
Return Value
Returns 0 if successful
Remarks
setvbuf
must be called after fopen
but before any other
function calls that operate on the stream. For the mode
argument, use one of
the following tabulated modes.
Mode | Meaning |
---|---|
_IOFBF | for full buffering |
_IOLBF | for line buffering |
_IONBF | for no buffering |
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[256];
if ((myfile1 = fopen("afile1", "w+")) != NULL)
{
if (setvbuf(myfile1, NULL, _IONBF, 0) == 0)
printf("myfile1 has no buffering\n");
else
printf("Unable to define buffer stream and/or size\n");
}
fclose(myfile1);
if ((myfile2 = fopen("afile2", "w+")) != NULL)
{
if (setvbuf(myfile2, buf, _IOFBF, sizeof(buf)) == 0)
printf("myfile2 has a buffer of %d characters\n", sizeof(buf));
else
printf("Unable to define buffer stream and/or size\n");
}
fclose(myfile2);
}
Example Output
myfile1 has no buffering
myfile2 has a buffer of 256 characters