我的代码
char temp;
AGAIN:
printf("Enter char: "); scanf("%c", &temp);
if (temp != 'A') goto AGAIN;
为什么它会回到AGAIN
,即使我的输入是' A' ?
如果我把这段代码放到main()
函数中,它就能正常工作。
但如果我在subrountine中做同样的事情,那就失败了。
答案 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:
。然后光标放置。