关于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循环的执行语句)情况:
还望大神指点! 展开
“for(i=0;i<10;i++)
scanf("%d ",&s[i]);”
scanf里加了个空格后果是什么?从结果来看貌似是要多输入一次数据才会结束循环,本来输入10次就可以了,加了空格变成要输入11次才会结束,但是更诡异的是多增加输入的那次数据不会对结果产生影响。但我不明白为什么。具体请看下面程序:
有空格(第一个for循环的执行语句)情况:
无空格(第一个for循环的执行语句)情况:
还望大神指点! 展开
4个回答
展开全部
这些设计到IO接口里面的键盘缓存区
因为我也不是很懂,但是一般来编程说不需要追求这些!
另外说2点本人的看法,最后一个数据可能当成最后的空位输入进去了
所以不影响最终结果,你可以测试把12放前面去,就会发现结果相差2
因为我也不是很懂,但是一般来编程说不需要追求这些!
另外说2点本人的看法,最后一个数据可能当成最后的空位输入进去了
所以不影响最终结果,你可以测试把12放前面去,就会发现结果相差2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf里面占位符前后加东西表示输入格式
例如"m%d"那么你每次输入前要输入一个m
"%dm"表示每次输入后要输入一个m
例如"m%d"那么你每次输入前要输入一个m
"%dm"表示每次输入后要输入一个m
追问
这个我想到了,但是我试着在输入的每个数据后加上空格,结果还是要多输入一次才会停止循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。
参考资料:http://www.oschina.net/question/234345_43611
参考资料:http://www.oschina.net/question/234345_43611
追问
为什么它只略去最后一个?循环中不是每个输入的数据都有可能被略去吗?这不是巧合吧
追答
你在最后输入个a或b 等非空字符也可以。。你没理解这句话
他说的多个空白字符是 在你输入一个数之后,在下次你输入另外一个数之前。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询