您的位置:首页 > 编程语言 > Java开发

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

2011-10-05 16:12 549 查看
最近我利用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐