c中printf命令的顺序

时间:2016-01-01 00:23:34

标签: c printf

我正在尝试学习c,我刚刚开始观看一些在线视频,并试图做这个例子,但我的结果并不是我所期望的。这段代码只是输入一个数字并打印出你输入的数字,但是我不能告诉它出错的地方。

 #include <stdio.h>

int main(void) {
    int aNumber;
    printf("Please enter a number: ");
    scanf("%d", &aNumber);
    printf("you entered %d", aNumber);
    getchar();
    return 0;
}

但是当我运行这段代码时,它应该要求用户输入一个数字而不是什么都没有,直到我输入一个数字,输出是这样的:

5
请输入一个数字:您输入了5

我键入5,按回车键然后代码打印出语句。任何人都可以告诉我为什么订单出错了。它应该是

请输入一个数字:5
你输入了5

其中&#34;请输入一个数字:&#34;首先弹出,然后输入5,依此类推。

2 个答案:

答案 0 :(得分:5)

您很可能需要刷新标准输出才能显示输出。要执行此操作,请致电fflush(stdout)。如果你不这样做,一些输出可能会被缓冲,导致你所看到的。

#include <stdio.h>

int main(void) {
    int aNumber;
    printf("Please enter a number: ");
    fflush(stdout);
    scanf("%d", &aNumber);
    printf("you entered %d", aNumber);
    getchar();
    return 0;
}

答案 1 :(得分:1)

这是一个非常不寻常的结果,来自这么简单的程序。其他人指出了'flush',我只想提一下,用新行结束printf也会导致缓冲区冲刷掉。因此,如果您不关心您的输入是否出现一条新线,您将有新的方法来处理它。