Eclipse 执行C程序问题

我想知道:为什么必须输入之后,才会打印出“Hello”,不应该是先打印“hello”,然后再让用户输入吗?在eclipse中如何让它执行时,不在下面显示。而类似于VS20... 我想知道:
为什么必须输入之后,才会打印出“Hello”,不应该是先打印“hello”,然后再让用户输入吗?
在eclipse中如何让它执行时,不在下面显示。而类似于VS2010一样,在一个命令行窗口显示?
展开
 我来答
liuyang054
推荐于2016-11-18 · TA获得超过9093个赞
知道大有可为答主
回答量:5317
采纳率:78%
帮助的人:5292万
展开全部

这个问题涉及到c里面一个缓冲区的问题

 

缓冲区指的是为标准输入与标准输出设置的缓冲区,为什么要设置一个标准输入缓冲区主要是从效率上来考虑的,如果不设缓冲区会降低cpu的效率,因为它总是会等待用户输入完之后才会去执行某些指令!同样设置一个标准输出缓冲区是为了解决打印的问题!

 

解决方法:

尝试在printf("Hello");后面加入一条fflush(stdout);刷新一下缓冲区

 

或者

在main()函数中第一条IO语句之前加上setvbuf(stdout,NULL,_IONBF,0);将stdout的缓冲模式设置为无缓冲.

#include <stdio.h>

#include <stdlib.h>

/**

 * 输入输出的缓冲区,不设缓冲区会降低cpu的效率,因为它总是会等待用户输入完之后才会去执行某些指令!

 * 在printf("Hello");后面加入一条fflush(stdout);刷新一下缓冲区

 * 或

 * 在main()函数中第一条IO语句之前加上setvbuf(stdout,NULL,_IONBF,0);将stdout的缓冲模式设置为无缓冲.

 */

int main(void) {

 setvbuf(stdout,NULL,_IONBF,0);

 puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */

 int a;

 printf("please input:\n");

 scanf("%d", &a);

 printf("The result is : %d\n", a);

 return EXIT_SUCCESS;

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式