控制台输出显示顺序错误

Joz*_*zöl 6 c console gcc

我正在使用 win 8.1 64bit Eclipse Luna 4.4.0 并使用 gcc 4.6.4 进行编译,问题是例如

在这个简单的程序中,myprintf和scanfstatements 以错误的顺序出现在控制台上。

#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;
}
Run Code Online (Sandbox Code Playgroud)

它这样做:

4

输入整数:你好 4

而不是这个:

输入整数:4

你好 4

jus*_*mer 5

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

如果\n在打印语句中使用after,它将自动打印整个缓冲区(这就是为什么最后一次调用printf打印所有内容)。对于您的情况,您可能需要使用手动冲洗fflush

printf("Enter int: "); fflush(stdout);
scanf("%d",&i);
printf("Hello %d\n",i);
Run Code Online (Sandbox Code Playgroud)

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