我正在尝试检查“y”或“n”,如果输入超出范围,则继续要求用户重新输入他们的回复。
我现在有什么:
do{
printf("Press 'y' to go again or 'n' to quit: ");
scanf("%s", goAgain);
result = strncmp(goAgain, yes, 1);
result2 = strncmp(goAgain, no, 1);
printf("%d %d\n", result, result2);
}while(result != 0 || result2 != 0);
我知道这不高效,我在调试时一直在尝试随机的东西。在此设置中,yes和no都是char *变量。是包含“y”而不包含“n”
最后一个printf的输出结果为0,结果为11。自从我使用OR以来,这应该已经退出了。我做了一些显然很愚蠢的事情,或者是我缺少一些C的怪癖(也是......这是我编写的第一个C程序所以请解释一下C的具体建议)
由于
编辑:谢谢你的回复....这是我应该抓住的一个相当愚蠢的错误。现在,有更好的方法吗?我目前的方式感觉非常笨重,而且我没有看到任何方法让它变得更加笨重(除了直接将strncmp移动到while语句中)
答案 0 :(得分:2)
如果result
为0且result2
为11,则
result != 0 || result2 != 0
0 != 0 || 11 != 0
false || true
true
表示while
循环将继续循环。
答案 1 :(得分:1)
strncmp(str1,str2,num)函数返回一个整数值,表示字符串之间的关系:
答案 2 :(得分:0)
char goAgain;
while(1){
printf("hello\n");
do{
printf("\nPress 'y' to go again or 'n' to quit: ");
}while(scanf(" %c", &goAgain) == 1 && goAgain != 'y' && goAgain != 'n');
if(goAgain == 'n')//there is no need to check for 'y'
break;
}