新人求解为什么只能输出space?

#include
void main()
{
char c;
scanf("%c",&c);
c=getchar();
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
printf("Letter");
else if(c>='0'&&c<='9')
printf("Number");
else if(c='(space)')
printf("Space");
else
printf("Other");
return 0;
}

c

3个回答

scanf getchar输入了两次,c 会把缓冲区里的回车'\n'读进来,所以c总是空白,输出就是Space
去掉getchar()或scanf即可

Nocrossnocrown
Nocrossnocrown 谢谢大神
一年多之前 回复

你去掉c=getchar();这句废话就可以了.

Nocrossnocrown
Nocrossnocrown 谢谢大神
一年多之前 回复

scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
getchar()以Enter结束输入,也不会舍弃最后的回车符;
所以使用两个语句会使回车留着,以至于每次识别都是Space。
可以试试把c=getchar()改成getchar()或者丢掉
#include
int main()
{
char c;
scanf("%c",&c);
getchar();
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
printf("Letter");
if(c>='0'&&c<='9')
printf("Number");
if(c='(space)')
printf("Space");
else
printf("Other");
return 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问