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

eclipse 中 scanf 先于printf 出现的问题

2012-04-05 23:32 204 查看
在写一个C语言时,运行时发现scanf比printf先执行了,在网上找了一下资料,原来是输出缓冲区的问题。解决方法有两个,第一,设置缓冲区为空,即没有缓冲区;第二,每执行printf之后,强制缓冲区。具体方法如下:

在printf之前添加:setvbuf(stdout,NULL,_IONBF,0);

设置缓冲区为空。

在每句printf之后添加:fflush(stdout);

测试代码如下:

方法一:

1

2

3

4

5

6

7

8

9

10

11
#include <stdio.h>

int main(void)
{

setvbuf(stdout,NULL,_IONBF,0);

char aa[20];

printf ("input:");

scanf("%s",
aa);

printf ("output:%s",
aa);

return 0;

}
方法二:

1

2

3

4

5

6

7

8

9

10

11
#include <stdio.h>

int main(void)
{

char aa[20];

printf ("input:");

fflush(stdout);

scanf("%s",
aa);

printf ("output:%s",
aa);

fflush(stdout);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: