C:从函数返回一个字符串?

标签 c string function return

所以我有这个函数,它接受 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/

相关文章:

python - Python 中的 String.strip()

arrays - 如何将一个数组和一个字符串作为参数传递给函数?

python - 更新 2D numpy 数组值

c - 关闭文件描述符之前的 printf 命令仍在外部文件中调用

python - OpenCV颜色识别

java - 我在字符串中有日期,我想将其转换为日期格式,但出现错误

java - 检查两个元素是否相同,每个元素来自不同的字符串数组

list - 在 common Lisp 中将函数列表作为参数传递

php - Linux C GCC 被另一个进程中断

c - 警告指针和整数之间的数组比较