我想使用两个字符串的比较作为循环的条件, 但循环进入无限循环,我不知道为什么。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void input(int a[], char *comando, char *aux) {
fgets(aux, 35, stdin);
sscanf(aux, "%s %d %d", comando, &a[0], &a[1]);
}
int table_size=10;
int ar_temp[2];
char comando[2];
char aux[35];
int main() {
while((strcmp (comando, "X"))!=0 || (strcmp (comando, "x")!=0)) {
input(ar_temp, comando, aux);
}
return 0;
}
请帮帮我
答案 0 :(得分:3)
条件错误,while语句总是评估为true。
while((strcmp (comando, "X"))!=0 || (strcmp (comando, "x")!=0))
应该是:
while((strcmp (comando, "X"))!=0 && (strcmp (comando, "x")!=0))
答案 1 :(得分:0)
虽然(我不是骆驼)或(我不是狗)......
即使是骆驼和狗也会对这些子条款的一个产生真实的结果,所以,既然是真的,或者任何事情都是真的,那么这个陈述总是会产生真的。
你需要的是(恢复到实际的代码,而不是我稍微荒谬的例子):
while ((strcmp (comando, "X") != 0) && (strcmp (comando, "x") != 0)) {
// ^^
// and rather than or
您还会注意到我已经修复了#34;&#34;您的第一个子句,以便括号的使用是一致的,在)
之后将0
移动到。
当然,如果您有其他任何地方可以检查comando
,那么可能需要预先设置单个案例,然后您只需要检查小写字体。