Eclipse 执行C程序问题
我想知道:为什么必须输入之后,才会打印出“Hello”,不应该是先打印“hello”,然后再让用户输入吗?在eclipse中如何让它执行时,不在下面显示。而类似于VS20...
我想知道:
为什么必须输入之后,才会打印出“Hello”,不应该是先打印“hello”,然后再让用户输入吗?
在eclipse中如何让它执行时,不在下面显示。而类似于VS2010一样,在一个命令行窗口显示? 展开
为什么必须输入之后,才会打印出“Hello”,不应该是先打印“hello”,然后再让用户输入吗?
在eclipse中如何让它执行时,不在下面显示。而类似于VS2010一样,在一个命令行窗口显示? 展开
1个回答
展开全部
这个问题涉及到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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询