Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
开关,外壳为C_C_Switch Statement_Case - Fatal编程技术网

开关,外壳为C

开关,外壳为C,c,switch-statement,case,C,Switch Statement,Case,我试着用大写字母来切换,但我想用单词来代替数字或字母,例如 案例“退出”:(…) 但我知道C不支持它 您能告诉我如何在case中使用“some word”吗?switch语句只不过是在众多选项中选择的一些优化而已。任何switch语句都可以实现为if…then…else if…语句 C中的优化是针对整数的,它不能处理字符串 因此,字符串的witch语句将是使用strcmp的if…then…else if…语句,例如 if (strcmp(a,"hello")==0) { //case "

我试着用大写字母来切换,但我想用单词来代替数字或字母,例如

案例“退出”:(…)

但我知道C不支持它


您能告诉我如何在case中使用“some word”吗?

switch语句只不过是在众多选项中选择的一些优化而已。任何switch语句都可以实现为
if…then…else if…
语句

C中的优化是针对整数的,它不能处理字符串

因此,字符串的witch语句将是使用strcmp的
if…then…else if…
语句,例如

if (strcmp(a,"hello")==0) {
    //case "hello"
}
else if (strcmp(a,"world")==0) {
    // case "world"
}
else {
    // default
}
switch
语句和
if..then..else
语句之间的一个区别是后者不知道“fall-thru”,除非使用
goto
,否则无法对其进行模拟(这是不鼓励的)


对您的问题的评论还建议使用比暴力字符串比较更高级的方法。所有这些方法都试图使用字符串的某些独特特征将其转换为可以实现
开关的某个数字。

计算要在case语句中使用的唯一序号或使用if-statements。您不能,但可以根据一组关键字测试单词,并将匹配的索引用作开关大小写。或者,你可以有一个唯一的首字母的单词,并将其用于开关盒。