控制台输出显示顺序错误

时间:2014-10-17 06:28:24

标签: c gcc console

我使用win 8.1 64bit Eclipse Luna 4.4.0并使用gcc 4.6.4进行编译,问题就在于此。

在这个简单的程序中,我的printfscanf语句以错误的顺序出现在控制台上。

#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;
}

它这样做:

  

4

     

输入int:Hello 4

而不是:

  

输入int:4

     

Hello 4

1 个答案:

答案 0 :(得分:3)

printf缓冲 1 。这意味着当你调用它时,将不会立即打印。相反,它会存储您要打印的内容,并在缓冲区中存储了足够的文本时自动打印。

如果在print语句后使用\n,它将自动打印整个缓冲区(这就是最后一次调用printf打印所有内容的原因)。对于您的情况,您可能希望使用fflush

手动刷新
printf("Enter int: "); fflush(stdout);
scanf("%d",&i);
printf("Hello %d\n",i);

1 从技术上讲,它是stdout被缓冲的,但更容易将其视为printf此时被缓冲。