[求助]为什么出现两行输入提示?(已经解决)
教材上的例子,将大写字母转为小写,我加了一个循环语句,结果屏幕上出现两行提示“Please input again:”,请各位大侠帮忙看看为什么会这样?
#include "stdio.h"
#include "ctype.h"
main()
{char x,y;
x=getchar();
while (isupper(x)==0)
{printf("Please input again:\n");
scanf("%c",&x);} /*换成x=getchar()也一样*/
y=x+32;
printf("%c %d\n",x,x);
printf("%c %d\n",y,y);
getch();
}
谢谢2-5楼朋友的回答,用其他方法也能完成这个转换。
我的问题是:为什么会出现两行提示? (2005.02.20)
问题原因如下:
1、scanf("%c",&x)语句表示只能接受1个字符,而输入一个字符后需要“回车”确认,
相当于输入了2个字符。
2、在循环语句中如果第一个字符不是大写字母,则第二个字符“回车”
自动被“scanf”接受(第二个字符也不是大写字母),所以会连续出现两行提示语句。
3、将原语句改为scanf("%2c",&x) 或scanf(" %c",&x)即可解决问题。如果超出1个字符,
仍然会出现原来的问题。
谢谢8楼的兄弟!(2005.02.26)
[此贴子已经被作者于2005-2-26 13:48:17编辑过]