比较C中的单个字符

时间:2014-03-19 14:06:46

标签: c char

我的代码

    char temp;
AGAIN:   
    printf("Enter char: "); scanf("%c", &temp);
    if (temp != 'A') goto AGAIN;

为什么它会回到AGAIN,即使我的输入是' A' ?

如果我把这段代码放到main()函数中,它就能正常工作。

但如果我在subrountine中做同样的事情,那就失败了。

2 个答案:

答案 0 :(得分:3)

这是因为\n下次调用时读取的sacnf字符 试试这个

scanf(" %c", &temp);  
       ^ A space before %c can eat up any number of white-spaces 

答案 1 :(得分:0)

但对我来说,它的工作!您的计划中是否还有其他任何标签?

#include<stdio.h>
//./a.out
int main()
{
char temp;
calfunc(temp);
}
char calfunc(char temp)
{
    printf("Inside Function");
AGAIN:
printf("Enter char: "); scanf("%c", &temp);
if (temp != 'A')
    goto AGAIN;
else
    printf("Temp: %c\n",temp);
printf("Final: %c\n",temp);
return temp;

}

结果:

如果输入“A”,Temp:A Final:A 如果输入任何其他甚至'a',Enter char: Enter char:。然后光标放置。