{{keywords>wiki library source code example reference}} ====== setvbuf ====== int setvbuf(FILE *stream, char *buffer, int mode, size_t size); Controls buffering for stream stream. mode is _IOFBF for full buffering, _IOLBF for line buffering, _IONBF for no buffering. Non-null buf specifies buffer of size size to be used; otherwise, a buffer is allocated. Returns non-zero on error. Call must be before any other operation on stream. _IOLBF File will buffered line by line _IONBF Input/Output will not be buffered _IOFBF Input/Output will fully buffered ===== C Sourcecode Example ===== /* * setvbuf example code * http://code-reference.com/c/stdio.h/setvbuf */ #include /* including standard library */ //#include /* uncomment this for Windows */ int main ( void ) { FILE *stream_not_buffered, *stream_full_buffered, *stream_line_buffered; stream_full_buffered=fopen ("test.txt","w"); stream_not_buffered=fopen("test2.txt","w"); stream_line_buffered=fopen("test3.txt","w"); /* case 1 full buffered */ setvbuf ( stream_full_buffered , NULL , _IOFBF , 2000L ); fputs("Buffered input for setvbuf full buffered", stream_full_buffered); fflush(stream_full_buffered); fclose(stream_full_buffered); /* case 2 not buffered */ setvbuf ( stream_not_buffered , NULL , _IONBF , BUFSIZ ); fputs("input for setvbuf not buffered", stream_not_buffered); fflush(stream_not_buffered); fclose(stream_not_buffered); /* case 3 line buffered */ setvbuf ( stream_line_buffered , NULL , _IOLBF , 80 ); fputs("Buffered input for setvbuf line buffered", stream_line_buffered); fflush(stream_line_buffered); fclose(stream_line_buffered); return 0; } output: ./setvbuf ==== content of test.txt === Buffered input for setvbuf full buffered ==== content of test2.txt === input for setvbuf not buffered ==== content of test3.txt === Buffered input for setvbuf line buffered see also [[c:stdio.h:setbuf|]]