Associate a buffer with a stream
#include <stdio.h>
int setvbuf( FILE *fp,
char *buf,
int mode,
size_t size );
libc
The setvbuf() function associates a buffer with the stream designated by fp. setvbuf() must be called after opening the stream, and before any reading or writing. The mode determines how the stream is buffered:
If buf isn't NULL, the buffer it points to is used instead of an automatically allocated buffer. The size argument specifies the size of the buffer.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char *buf;
FILE *fp;
fp = fopen( "file", "r" );
buf = malloc( 1024 );
setvbuf( fp, buf, _IOFBF, 1024 );
/* work with fp */
...
fclose( fp );
/* This is OUR buffer, so we have
* to free it. Do that AFTER
* you've closed the file.
*/
free( buf );
return EXIT_SUCCESS;
}
| Safety: | |
|---|---|
| Cancellation point | No |
| Interrupt handler | No |
| Signal handler | No |
| Thread | Yes |