gpt4 book ai didi

c - c 中的开关/字符串

转载 作者:行者123 更新时间:2023-11-30 15:16:01 25 4
gpt4 key购买 nike

我试图让这个函数返回一个字符串。

char * vergleich(int random) {
char *erg;
switch(random) {
case 1: erg = "Siccor" ; break;
case 2: erg = "Paper" ; break;
case 3: erg = "Rock" ; break;
case 4: erg = "Lizard" ; break;
case 5: erg = "Spock" ; break;
default: break;
return erg;
}
}

int main() {
srand(time(NULL));

int p1 = rand() % 4;
int p2 = rand() % 4;

printf("player1 shows %s\n", vergleich(p1));
printf("\n\tif Player 2 plays %s or %s Player1 wins\n", vergleich(p1+1), vergleich(p1+3));
if(p2 == p1 + 1 || p2 == p1 +3) {
printf("player1 wins");
}else {printf("player2 wins");}
return 0;
}
}

我认为函数的初始化是错误的,但我真的不知道如何处理字符串,请帮忙。

如果我运行该程序,如果case > 2,它就会崩溃。并且字符串显示不正确。

最佳答案

发生崩溃是因为可以使用参数 0 调用函数 vergleich()(当 p10 时) >) 和 6(当 p13 时)。交换机中不处理零和六,因此指针 erg 指向垃圾。

因此,我建议从 04 枚举您的项目。为了避免加法期间溢出,您还应该使用模运算 %,例如 (p1 + 3) % 5(p1 + 1) % 5 >.

要生成从 04 的随机数,您可以使用 rand() % 5;

关于c - c 中的开关/字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33291361/

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