C语言 | switch 语句匹配字符串的方法
时间: 2023-07-20 16:24:55 浏览: 414
switch语句的一般形式-c语言教程学习
在 C 语言中,switch 语句只能匹配整型或字符型的常量表达式,不能直接匹配字符串。但是,我们可以通过将字符串转换为整型或者字符型来实现字符串的匹配。
一种方法是将字符串转换为整型,可以使用哈希函数将字符串映射为一个整数,然后将该整数作为 switch 语句的表达式进行匹配。例如:
```c
#include <stdio.h>
#include <string.h>
unsigned int hash(char *str) {
unsigned int hash = 0;
while (*str) {
hash = hash * 131 + (*str++);
}
return hash;
}
int main() {
char str[100];
scanf("%s", str);
switch (hash(str)) {
case hash("hello"):
printf("Hello, world!\n");
break;
case hash("hi"):
printf("Hi there!\n");
break;
default:
printf("Unknown string!\n");
break;
}
return 0;
}
```
另一种方法是将字符串转换为字符型,可以使用字符串的第一个字符作为 switch 语句的表达式进行匹配。例如:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
scanf("%s", str);
switch (str[0]) {
case 'h':
if (strcmp(str, "hello") == 0) {
printf("Hello, world!\n");
} else if (strcmp(str, "hi") == 0) {
printf("Hi there!\n");
} else {
printf("Unknown string!\n");
}
break;
default:
printf("Unknown string!\n");
break;
}
return 0;
}
```
需要注意的是,这两种方法都有一定的局限性和不足之处,具体应用需要根据实际情况进行判断和调整。
阅读全文