【发布时间】:2015-10-22 21:48:36
【问题描述】:
我试图让这个函数返回一个字符串。
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 时崩溃。并且字符串显示不正确。
【问题讨论】:
-
rand() % 4将产生可能的值 0、1、2 和 3。 -
没有专门解决您的问题,但
p1和p2永远不会是 4 或 5 并且可能是 0。我想您可能想要p1 = rand() % 5 + 1这将创建一个随机数0-4,然后添加一个,所以现在范围是 1-5,它看起来就是你想要的 -
在
default案例中的break之后,您似乎有语法错误。return不合适。 -
你的编译器想对你大喊大叫!启用编译器警告并注意它们!
-
好的,谢谢。返回是坏小子..
标签: c string switch-statement