Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Console output appears in the wrong order

Tags:

c

gcc

console

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

like image 806
Jozef Gönczöl Avatar asked Oct 17 '14 06:10

Jozef Gönczöl


1 Answers

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.

like image 187
just.another.programmer Avatar answered Sep 29 '22 12:09

just.another.programmer