【发布时间】:2014-07-07 18:26:56
【问题描述】:
为了好玩,我正在用 C 语言制作一个小文字冒险游戏,但遇到了一个小问题。
char cobra_weapon[5];
int cobra_sword_bonus = 3;
int cobra_mace_bonus = -2;
int cobra_attack_score;
int cobra_main_hand;
int cobra_off_hand = shield;
do {
fgets(cobra_weapon, 5, stdin);
if (strcmp(cobra_weapon,"sword") == 0)
cobra_main_hand = sword + cobra_sword_bonus;
else if (strcmp(cobra_weapon,"mace") == 0)
cobra_main_hand = mace + cobra_mace_bonus;
else
printf ("You entered %s. Please enter either sword or mace.\n", cobra_weapon);
} while (strcmp(cobra_weapon,"sword") != 0 || strcmp(cobra_weapon,"mace") != 0);
我遇到的问题是当我输入正确的字符串时 strcmp 没有捕捉到条件。即使我输入剑或狼牙棒,它仍然会继续循环。我确信这将是一些我没有看到的简单的东西,但我们将不胜感激。
【问题讨论】:
-
fgets也可能包含换行符,所以sword真的是sword\n\0 -
如果在 if 中添加了一个 break,则不需要在 while 循环和 if 语句中进行检查。
-
我认为你可以使用调试器
-
只需使用 strncmp 而不是 strcmp 并且只比较您要匹配的字符串的长度。
标签: c string loops comparison