关于C语言scanf函数的一个问题,望高手指点一二

关于在scanf("%d",&x[y])的%d后面加空格会产生什么影响。“for(i=0;i<10;i++)scanf("%d",&s[i]);”scanf里加了个空格后... 关于在scanf("%d",&x[y])的%d后面加空格会产生什么影响。
“for(i=0;i<10;i++)
scanf("%d ",&s[i]);”
scanf里加了个空格后果是什么?从结果来看貌似是要多输入一次数据才会结束循环,本来输入10次就可以了,加了空格变成要输入11次才会结束,但是更诡异的是多增加输入的那次数据不会对结果产生影响。但我不明白为什么。具体请看下面程序:
有空格(第一个for循环的执行语句)情况:

无空格(第一个for循环的执行语句)情况:

还望大神指点!
展开
 我来答
金色潜鸟
2013-10-31 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5709万
展开全部
scanf("%d ",&s[i]); 只影响 一次 读数。
如果 放在循环语句里,
for (i=0;i<5;i++) scanf("%d ", &x);
只需多输入1个数。
原来输入 5 个 就可以, 现在要输入 6 个,但 只读入了 前 5 个数据。
第6个数据还残留在输入流里。

如果你有后继读语句,后继读语句将读入残留在输入流里的第6个数据。
除非你用 fflush(stdin) 把输入流 打扫干净。
454459182
2013-10-31 · TA获得超过5340个赞
知道大有可为答主
回答量:2969
采纳率:50%
帮助的人:1260万
展开全部
这些设计到IO接口里面的键盘缓存区

因为我也不是很懂,但是一般来编程说不需要追求这些!

另外说2点本人的看法,最后一个数据可能当成最后的空位输入进去了
所以不影响最终结果,你可以测试把12放前面去,就会发现结果相差2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
剑影越林
2013-10-31 · TA获得超过822个赞
知道小有建树答主
回答量:402
采纳率:0%
帮助的人:316万
展开全部
scanf里面占位符前后加东西表示输入格式
例如"m%d"那么你每次输入前要输入一个m
"%dm"表示每次输入后要输入一个m
追问
这个我想到了,但是我试着在输入的每个数据后加上空格,结果还是要多输入一次才会停止循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
confident89
2013-10-31 · 超过32用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:88.5万
展开全部
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

参考资料:http://www.oschina.net/question/234345_43611
追问
为什么它只略去最后一个?循环中不是每个输入的数据都有可能被略去吗?这不是巧合吧
追答
你在最后输入个a或b 等非空字符也可以。。你没理解这句话
他说的多个空白字符是 在你输入一个数之后,在下次你输入另外一个数之前。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式