满意答案
在scanf的使用过程中应注意的问题中已经指出:“scanf()的格式控制串可以使用空白字符或其它非空白字符,使用空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。” 所以在%前面加上了空格(空格属于空白字符,此外还有像制表符等也属于空白字符),在输入过程中,将略去输入中的一个或多个空白字符,所以我们输入的0 1 2 3 4 5 6 7 8 9这些字符中的空白字符就被略去了,字符9也就正确的打印出来了。
理论你可能听不懂,举个例子,下面的程序
这个程序功能就是输入y打印俩个yy。
#include
int main(void)
{
char ch;
do
{
printf("AA\n");
printf("是否继续?(y/n)\n");
scanf(" %c", &ch);//为什么%c前面要加空格才能实现这个功能?
} while (ch=='y' || ch=='Y');
return 0;
}
但是,当你把scanf中%c前面的空格去掉,那就只能打印2次,原因何在,就是因为如果不加空格,那么在第一次输入scanf的数据有个回车键,这个回车键被下一次的scanf所截获。
所以,当需要循环输入数据时,必须要在scanf前面加个空格,否则在按下回车后,回车字符会被下一个scanf接收,造成意想不到的错误。
如有帮助谢谢采纳
20分享举报