#include <stdio.h>
int main(){
char a[2] = {0};
a[0] = 't';
printf("%s", a);
scanf("%c", a);
return 0;
}
scanf
here will cause an automatic flush of stdout.
Running a.out
will print t
on the terminal before running scanf, more info: How is printf getting flushed before scanf is executed?
However, doing a.out > out.txt
and terminating it with ^C
does not print anything inside out.txt
yet the output still appeared on the screen without redirecting stdout with >
.
If stdout is being flushed then why out.txt
is still empty?
If it's not being flushed then how did t
appear on the screen in the first example?
(I know using \n
or a manual fflush or properly terminating the program will fix the issue, i'm just curious about this behaviour).