首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

scanf函数%d后添空白

2013-03-14 
scanf函数%d后加空白如果scanf(%d,&i)输入:1+回车即可结束输入了。scanf(%d ,&i)printf(%d\n,i)为

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后的空格匹配。

热点排行