为了账号安全,请及时绑定邮箱和手机立即绑定

你好,请教一下scanf函数%c的问题?

你好,请教一下scanf函数%c的问题?

幕布斯6054654 2021-01-12 15:15:27
连续两个scanf,ex:printf("Y or N?");scanf("%c",a);printf("Y or N?);scanf("%c",b);会出现第二个被省略的现象,我去网上查说,第二个%c加空格,即可,我试了,的确行,他还说是缓存问题。。那为什么只有%c这样呢?还有+空格跟清除缓存有什么关系?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

第一,你的程序有问题
scanf("%c",&a);//这里要&(取地址符)
第二,为什么第二个会被忽略的问题是因为,第一次输入的时候,回车键会滞留在输入缓冲区,第二次要去输的时候,会直接去读回车键
在第二次要去输入的时候,可以先清除缓冲区,用getchar(),或者用fflush(stdin)

printf("Y or N?");
scanf("%c",&a);
getchar();//或者fflush(stdin);
printf("Y or N?);
scanf("%c",&b);

查看完整回答
反对 回复 2021-03-28
?
暮色呼如

TA贡献1853条经验 获得超9个赞

首先scanf应该这样用 scanf("格式化字符串",变量地址)你的用法是错误的
"%c"只从输入缓冲里读一个字符,但是你在输入的时候不只一个字符,剩下的字符(包括回车)就留给第二个"%c"了
解决方法:
printf("Y or N?");
scanf("%c\n",&a);
fflush(stdin);
printf("Y or N?);
scanf("%c\n",&a);
fflush(stdin);


查看完整回答
反对 回复 2021-03-28
  • 2 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信