2 c arrays label case switch-statement
我正在开发一个游戏,我运行了我的代码并得到错误"案例标签不会减少到一个整数常量." 我想我知道这意味着什么,但我该如何解决呢?这是我的代码:
#include<stdio.h>
#include<stdlib.h
int player_cash[3] = {50};
char job[][20] {
'A',
'B',
'C',
"Donate",
"Go to work",
"Exit"
};
int jobs;
int main()
{
while(player_cash[0] > 0) {
printf("Please type A, B, C, Donate, Go to work, or Exit\n");
switch(jobs) {
case 'A':
player_cash[0]-=5;
player_cash[1]+=5;
printf("Cash=%i\n\n", player_cash[0]);
continue;
case 'B':
player_cash[0]-=5;
player_cash[2]+=5;
printf("Cash=%i\n\n", player_cash[0]);
continue;
case 'C':
player_cash[0]-=5;
player_cash[3]+=5;
printf("Cash=%i\n\n", player_cash[0]);
continue;
case "Donate":
player_cash[0]-=15; //Error here
player_cash[1]+=5;
player_cash[2]+=5;
player_cash[3]+=5;
printf("Cash donated\n\n");
printf("Cash=%i\n\n", player_cash[0]);
continue;
case "Go to work":
player_cash[0]+=10; //Error here
printf("Work done\n\n");
printf("Cash=%i\n\n", player_cash[0]);
continue;
case "Exit":
printf("Thanks for playing!\n\n"); //Error here
break;
default:
printf("Does not compute");
continue;
}
}
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因此,我希望用户做的是键入其中一个选项,并执行与其对应的操作.我该如何解决?
您不能将字符串用作case表达式:
case "Donate":
Run Code Online (Sandbox Code Playgroud)
只能使用整数表达式,所以例如case 'A':可以.
从概念上讲,你遇到了问题:jobs是int,你正在测试字符串.如果你想允许用户输入字符串(多个单个字符),你需要保留一个字符串变量,并使用类似的东西fgets来获得一整行输入.