当前位置: 代码迷 >> C语言 >> [求助]编译通过,但输入第二个字母无显示!
  详细解决方案

[求助]编译通过,但输入第二个字母无显示!

热度:348   发布时间:2006-08-11 19:42:56.0
上面的程序仍是漏洞百出
只用了个getchar();就想接收所有的回车了吗?
----------------解决方案--------------------------------------------------------

在c语言中输入是以回车作为结束而您用getchar()接收字符,前面刚好有个回车这个回车就背getchar()接收了,接下来在您的判断语句中就回出现错误;因此您在输入下一个字符的前应该再用getchar()接受前面的回车(相当于把回车这个字符清除了)

我以前也犯这样的错,这也是我再这个论坛里晓的的,

改过后的:

#include <stdio.h>
void main()
{
char letter ;
printf("please input the first letter of someday:\n");
/*当所按字母为Y时才结束*/
while((letter=getchar())!='Y')
{
switch(letter)
{
case 'S' :
getchar(); //清除回车,后面还有这种情况
printf("please input second letter:\n");
if((letter=getchar())=='a')
{
printf("saturday\n");
getchar();
}
else if((letter=getchar())=='u')
printf("sunday\n");
else printf("data error\n");
break ;
case 'F' :
getchar();
printf("friday\n");
break ;
case 'M' :
getchar();
printf("monday\n");
break ;
case 'T' :
getchar();
printf("please input second letter:\n");
if((letter=getchar())=='u')
{
printf("tuesday\n");
getchar();
}
else if((letter=getchar())=='h')
printf("thursday\n");
else printf("data error\n");
break ;
case 'W' :
getchar();
printf("wednesday\n");
break ;
default :
printf("data error\n");
}
}
}


----------------解决方案--------------------------------------------------------
  相关解决方案