C语言scanf 接收字符,C语言中,scanf接收单个字符的问题!!!!!!!!!!!!!!!!...

满意答案

在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分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值