I'm using win 8.1 64bit Eclipse Luna 4.4.0 and compiling with gcc 4.6.4 and the problem is e.g.
in this simple program, my printf
and scanf
statements are appearing on the console in the wrong order.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
printf("Enter int: ");
scanf("%d",&i);
printf("Hello %d\n",i);
return EXIT_SUCCESS;
}
it does this:
4
Enter int: Hello 4
instead of this:
Enter int: 4
Hello 4
printf
is buffered1. That means when you call it, it will not immediately print. Instead, it will store what you told it to print, and automatically print it when enough text has been stored in the buffer.
If you use a \n
after in your print statement, it will automatically print the whole buffer (that's why the last call to printf
prints everything). For your case, you may want to use a manual flush with fflush
printf("Enter int: "); fflush(stdout);
scanf("%d",&i);
printf("Hello %d\n",i);
1 Technically, it's stdout
which is buffered, but it's easier to think of it as printf
being buffered at this point.
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