相信很多朋友都会和我遇到同样的问题,就是如下程序:
#include <stdio.h>
int main() {
int i;
printf("请输入一个数字:");
scanf("%d", &i);
printf("您输入的数字是 %d 。", i);
return 0;
}
我们期望在控制台中的输出是:
请输入一个数字:1 (你的输入)
您输入的数字是 1 。
但大家可能会发现,CDT的控制台会先进入到等待输入状态再输出。结果就会就成这样:
1
请输入一个数字:您输入的数字是 1 。
我也遇到了同样的问题,我在eclipse的官网上找到了答案,大概是这样说的。这并不是CDT的问题,而是你采用的C语言的库的问题,通常的C的输入输出库使用了带缓冲的输入输出,所以 printf 的内容还没有从缓冲中输出。实际在写代码的时候在每句 printf 的后面加上一句“fflush(stdout);"就可以啦。
即,如上的代码可以改写成:
#include <stdio.h>
int main() {
int i;
printf("请输入一个数字:");
fflush(stdout);
scanf("%d", &i);
printf("您输入的数字是 %d 。", i);
return 0;
}
这样就可以达到你想要的结果啦。