gpt4 book ai didi

c - 字符串比较循环问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:37 24 4
gpt4 key购买 nike

为了好玩,我正在用 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 没有捕捉到条件。即使我输入剑或狼牙棒,它仍然会继续循环。我敢肯定,这将是我没有看到的简单事情,但我们将不胜感激。

最佳答案

首先,有几点需要考虑:

char cobra_weapon[5];

这没有足够的内存来存储“sword\0”。将其更改为:

char cobra_weapon[6];  

...或者更好的是,将其更改为更大的维度:

char cobra_Weapon[63+1]; 

然后,同样改变:

fgets(cobra_weapon, 5, stdin);

到:

fgets(cobra_weapon, sizeof(cobra_weapon), stdin);

最后,请记住 fgets() 喜欢将 '\n' 字符附加到输入字符串。因此,删除换行符很重要。也许这样的事情会更好:

do {
char *cp;

while(NULL == fgets(cobra_weapon, sizeof(cobra_weapon), stdin))
/* LOOP */ ;

cp=strchr(cobra_weapon, '\n');
if(cp)
*cp='\0';

...

只要有剑,-或-狼牙棒,就一直循环:

while (strcmp(cobra_weapon,"sword") != 0 || strcmp(cobra_weapon,"mace") != 0);

或:

while(strcmp(cobra_weapon,"sword") || strcmp(cobra_weapon,"mace"));

只要没有- sword -and- -no- mace 就一直循环:

while(strcmp(cobra_weapon,"sword") && strcmp(cobra_weapon,"mace"));

只要同时有剑和狼牙棒,就一直循环:

while(0 == strcmp(cobra_weapon,"sword") && 0 == strcmp(cobra_weapon,"mace"));

只要有剑或狼牙棒就一直循环:

while(0 == strcmp(cobra_weapon,"sword") || 0 == strcmp(cobra_weapon,"mace"));

关于c - 字符串比较循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24617272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com