eclipse中scanf和printf的运行顺序颠倒的解决方法

最近我利用Eclipse进行c语言开发时,发现当使用输入输出函数时,会出现一种奇怪的现象:必须在控制台完全输入数据后,控制台才会输出诸如提示输入的语句及最终结果。

如下代码:

#include <stdio.h>
#include <stdlib.h>

int main(void) {

int n = 0;
printf("Input a number: ");
scanf("%d", &n);
printf("/nThe number you entered was %d/n", n);
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
return EXIT_SUCCESS;
}

编译链接后的控制台运行结果如下图所示:

显然,运行结果并不是我们需要的。

通过查阅资料,发现在Eclipse中在输入数字前需要刷新标准输出stdout。

刷新标准输出可以通过两种方式:一种是隐式提示,利用换行提示符完成(如常见的printf("\n")语句);另一种是显式提示利用fflush(stdout)语句完成。在尝试第一种失败后,我尝试了第二种方法,即使用fflush(stdout)语句,最终成功实现了控制台先出现提示语句,在输入数字。

调整后的代码如下:

#include <stdio.h>
#include <stdlib.h>

int main(void) {

int n = 0;
printf("Input a number: ");
fflush(stdout);
scanf("%d", &n);
printf("\nThe number you entered was %d\n", n);
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
return EXIT_SUCCESS;
}

相应的运行结果如下图所示:


在此记录,与大家分享。

参考博友文章:http://blog.csdn.net/rznice/article/details/5333338


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值