所以我有这个函数,它接受 1-13 之间的值并返回一个字符串。
const char *valueName(const int valueNum)
{
switch (valueNum) {
case 1: return "Ace";
case 2: return "Two";
case 3: return "Three";
case 4: return "Four";
case 5: return "Five";
case 6: return "Six";
case 7: return "Seven";
case 8: return "Eight";
case 9: return "Nine";
case 10: return "Ten";
case 11: return "Jack";
case 12: return "Queen";
case 13: return "King";
}
return "(invalid suit)";
}
这个函数没有问题,但我的老师说多个返回语句是不好的做法,所以我应该改为使用开关将字符串分配给一个变量并返回它。但是我似乎无法弄清楚该怎么做。我需要为此使用指针吗? 据我的老师说,这应该是一个简单的解决方法,但无论我尝试什么,它都不起作用。
提前致谢!
P.S 不要求积分或其他任何东西,但请不要仅仅因为这对您来说很明显就投反对票;我还是个初学者。
最佳答案
您可以简单地使用一个字符串数组:
const char *valueName(int valueNum) {
static const char * const names[] = { "(bad)", "Ace", "Two", ...};
if (valueNum<1 || valueNum>13) valueNum=0;
return names[valueNum];
}
如果你真的想要一个const int
参数,那么:
const char *valueName(const int valueNum) {
static const char * const names[] = { "(bad)", "Ace", "Two", ...};
return names[(valueNum<1 || valueNum>13)? 0 : valueNum];
}
关于C:从函数返回一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881264/