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

2025-05-05 11:23:47
推荐回答(4个)
回答1:

scanf("%d ",&s[i]); 只影响 一次 读数。
如果 放在循环语句里,
for (i=0;i<5;i++) scanf("%d ", &x);
只需多输入1个数。
原来输入 5 个 就可以, 现在要输入 6 个,但 只读入了 前 5 个数据。
第6个数据还残留在输入流里。

如果你有后继读语句,后继读语句将读入残留在输入流里的第6个数据。
除非你用 fflush(stdin) 把输入流 打扫干净。

回答2:

这些设计到IO接口里面的键盘缓存区

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

另外说2点本人的看法,最后一个数据可能当成最后的空位输入进去了
所以不影响最终结果,你可以测试把12放前面去,就会发现结果相差2

回答3:

scanf里面占位符前后加东西表示输入格式
例如"m%d"那么你每次输入前要输入一个m
"%dm"表示每次输入后要输入一个m

回答4:

空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

参考资料:http://www.oschina.net/question/234345_43611