switch语句中的C字符串

Fra*_*lea 4 c switch-statement

可能重复:
在C中打开字符串的最佳方法

字符串(c字符数组)和switch语句一起使用的一般方法是什么?我正在查询数据库中存储为的货币

"USD"
"EUR"
"GBP"
Run Code Online (Sandbox Code Playgroud)

等等。来自PHP背景,我只需执行以下操作:

switch ($string) {
  case "USD":
   return "$";
   break;
  case "EUR":
   return "€";
   break;   
  case "GBP":
   return "£";
   break;
  default:
   return "$";
}
Run Code Online (Sandbox Code Playgroud)

在C中,case值必须是整数。我将如何在C中实现类似的功能?我最终会在一个很大的if / else块中写很多strcmp吗?另请注意,我不能简单地比较货币的第一个字符,因为某些字符(尽管在本示例中不是)以相同的字符开头。

das*_*ght 5

一种方法是定义一个C字符串数组,并将其用作顺序的定义:

const char *currencies[] = {"USD", "GBP", "EUR"};
Run Code Online (Sandbox Code Playgroud)

现在,您可以搜索currencies您的字符串,并在switch语句中使用其索引

您可以看中并-对字符串进行排序,并使用它bsearch来查找索引O(LogN)