连续两个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);
暮色呼如
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);
添加回答
举报
0/150
提交
取消