这个问题在这里已有答案:
我想比较一些字符串,但不幸的是我没有找到任何正确的方法来做到这一点 .
背后的想法是要求键盘输入,读取变量,一个符号,如果它是“y”或“n”(显然是“是”或“否”),它执行某些活动 . 如果char的值都不是它们,则再次询问该问题,直到没有按下“y”或“n” . 我不明白如何实现这一点 .
#include
#include
int main()
{
char answer;
answer='a';
while (answer!='n'&&answer!='y')
{
printf("\nQuestion? (y/n) ");
scanf("%c",&answer);
}
return 0;
}
这实际上非常好用,但如果我不按'y'或'n',“while”再次启动,由于我无法理解的原因,“printf”执行的次数比输入 . 因此,如果我们运行此代码并将“asdf”作为输入(四个符号)应用,则“while”中的“printf”将显示五(四加一)次 . 结果是:
Question? (y/n)
Question? (y/n)
Question? (y/n)
Question? (y/n)
Question? (y/n)
其他一切在我的代码中工作得非常好,但是这......显然,这不是最好的方法 . 我也试过“strcmp()”:
#include
#include
int main()
{
char answer='a';
while (strcmp(answer,'n')!=0&&strcmp(answer,'y')!=0)
{
printf("Question?");
scanf("%c",&answer);
}
return 0;
}
我不知道为什么,但程序甚至没有开始 . 很明显,我没有正确实施“strcmp”,我不明白有什么不对 .
任何想法,我该怎么做,所以我可以避免在“while”中多次执行“printf”或者让“strcmp”以我要求的方式工作?