2 buhuiyaolian buhuiyaolian 于 2016.04.19 18:45 提问

用gcc编译之后scanf和printf问题

我先写了一个printf(“XXXXX”);在写了一个scanf(“%d”,&a),运行之后不会打印出printf的内容,只有当我输入一个值之后才打印出printf的内容,请问这是怎么回事?但在vs2015和linux系统下显示就正确,gcc版本为5.3.0。

6个回答

NK_test
NK_test   Rxr 2016.04.19 23:55
已采纳

缓冲区的问题,print可能滞留在缓冲区了,语句后加上fflush(stdout)

buhuiyaolian
buhuiyaolian 谢谢啊,纠结了好久,就是这个问题,重来没有遇到过,又get一个新技能。
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.04.19 18:51

贴出你的完整代码才知道。以及你是怎么运行的程序。

oyljerry
oyljerry   Ds   Rxr 2016.04.19 18:59

是不是有什么地方阻塞了,具体要看你的编译选项等。

bigmouthba
bigmouthba   2016.04.19 19:05

可能是缓冲区的问题,你在程序开始的地方写上setbuf(stdout,NULL),或者printf("xxxxxx\n").因为默认是是行缓冲。

qq_18519771
qq_18519771   2016.04.25 14:40

这是因为缓冲的问题、你可以在printf(“…/n")或者加一个fflush(stdout)或者调用处理缓冲区的退出exit 0。

codehat
codehat   2016.05.03 23:17

不要用stdout,直接用stderr试试

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!