scanf函数%c的问题

连续两个scanf,ex:

printf("Y or N?");
scanf("%c",a);
printf("Y or N?);
scanf("%c",b);

会出现第二个被省略的现象,我去网上查说,第二个%c加空格,即可,我试了,的确行,他还说是缓存问题。。

那为什么只有%c这样呢?
还有+空格跟清除缓存有什么关系?
我知道怎么回事了,顺便把http://topic.csdn.net/t/20050221/11/3794760.html提出来,同样疑惑的看此贴。。。。

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

printf("Y or N?");
scanf("%c",&a);
getchar();//或者fflush(stdin);
printf("Y or N?);
scanf("%c",&b);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-04
首先scanf应该这样用 scanf("格式化字符串",变量地址)你的用法是错误的
"%c"只从输入缓冲里读一个字符,但是你在输入的时候不只一个字符,剩下的字符(包括回车)就留给第二个"%c"了
解决方法:
printf("Y or N?");
scanf("%c\n",&a);
fflush(stdin);
printf("Y or N?);
scanf("%c\n",&a);
fflush(stdin);
第2个回答  2010-01-03
%c 只取一个字符。scanf加 "\n" 或 调fflush(stdin); 清缓冲区。
printf("Y or N?\n");
scanf("%c\n",&a);
printf("Y or N?\n");
scanf("%c\n",&b);
第3个回答  2020-03-06
那是什么东东啊???
第4个回答  2019-07-26
你给他了我就举报你.
相似回答