When I do this (note the included \n):
printf("Something.\n");
I would like it not to flush the buffer. I would like to manually flush it later.
Is this possible?
This question sort of asks the same thing, but asks about C++ instead of C. I don't see how I could gather how to do this in C by reading the answers to that question (so it's not a duplicate).
As explained in the comments, setvbuf can be used to change the buffering of any file stream, including stdout.
Here is a simple example:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
setvbuf(stdout, NULL, _IOFBF, 0);
printf("hello world\n");
sleep(5);
}
The example uses setvbuf to make stdout fully buffered. Which means it will not immediately output upon encountering a newline. The example will only display the output after the sleep (flush on exit). Without the setvbuf the output will be displayed before the sleep.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With