读书人

scanf函数%d后添空白

发布时间: 2013-03-14 10:33:15 作者: rapoo

scanf函数%d后加空白
如果scanf("%d",&i);
输入:1+回车
即可结束输入了。

scanf("%d ",&i);
printf("%d\n",i);

为什么%d后面有空格的时候,输入如:1+若干空白字符+回车,不能结束输入?

只有输入如下时才能结束输入:
1+若干空白字符+回车
+非空白字符+回车
printf输出

或:

1+若干空白字符内+非空白字符内+回车
printf输出


[解决办法]


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

[解决办法]
%d后面加空格 这个空格会匹配后面一堆连续的空白字符
被匹配走了 scanf就没有\n结束输入了
[解决办法]
简单点说,你输入的数字后面的空白符(空格也好,回车也好),都被%d吸收了,因为空白符表示数字的结束;
这样一来,要匹配%d后面的空格,必然要输入一个非空格符,被%d吸收掉,之后空格才能被%d后的空格匹配。

读书人网 >C语言

热点推荐