我正在尝试学习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,依此类推。
答案 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也会导致缓冲区冲刷掉。因此,如果您不关心您的输入是否出现一条新线,您将有新的方法来处理它。