C setvbuf() function
C library function - setvbuf()
The setvbuf() function is used to control over the buffering strategy and buffer size for a specified stream. The stream must refer to a file that has been opened, but not read or written to.
Syntax:
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
setvbuf() Parameters:
Name | Description | Required /Optional |
---|---|---|
stream | Identifies an address for a file descriptor, which is an area of memory associated with an input or output stream. | Required |
buffer | The system uses the buffer, which you specify, for input/output buffering instead of the default system-allocated buffer for the given stream. | Required |
mode | A mode for file buffering | Required |
size | Size of the buffer in bytes. | Required |
The Mode must be one of the following:
Mode | Description |
---|---|
_IOFBF | Full buffering is used for input and output. Use buf as the buffer and size as the size of the buffer. |
_IOLBF | Line buffering is used. The buffer is deleted when a new-line character is written, when the buffer is full, or when input is requested. |
_IONBF | No buffer is used. |
Return value from setvbuf()
- Upon successful completion, setvbuf() shall return 0.
- Otherwise, it shall return a non-zero value if an invalid value is given for type or if the request cannot be honored, and may set errno to indicate the error.
Example: setvbuf() function
This example opens the file test.txt for writing. To create a buffer of size BUFSIZ, it calls the setbuf() function. Strings are written to the stream using the buffer buf, which contains the string before it is flushed to the file.
#include <stdio.h>
#define BUF_SIZE 1024
char buf[BUF_SIZE];
FILE *stream1, *stream2;
int main(void)
{
stream1 = fopen("file1.txt", "r");
stream2 = fopen("file2.txt", "r");
/* stream1 uses a user-assigned buffer of BUF_SIZE bytes */
if (setvbuf(stream1, buf, _IOFBF, sizeof(buf)) != 0)
printf("Wrong type or size of buffer\n");
/* stream2 is unbuffered */
if (setvbuf(stream2, NULL, _IONBF, 0) != 0)
printf("Wrong type or size of buffer\n");
/* This is a program fragment and not a complete function example */
}
C Programming Code Editor:
Previous C Programming: C setbuf()
Next C Programming: C tmpfile()
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/c-programming/stdio/c_library_method_setvbuf.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics