C语⾔switch语句匹配字符串的⽅法
在某些情形下,我们需要根据⼀些已知的字符串进⾏相应的处理,⽐如根据从串⼝接收到字符串命令执⾏操作。
假如要通过串⼝控制某个设备的开启、关闭以及查询等功能,其控制命令 cmd 分别为 OPEN、CLOSE、 和QUERY。
利⽤C语⾔标准库函数 int strcmp(const char *str1, const char *str2) 来出每⼀个控制命令,然后执⾏相应的操作:
char cmd[10]="OPEN";
if(0==strcmp("OPEN", cmd))
{
deviceOpen();
}
else if(0==strcmp("CLOSE", cmd))
{
switch的用法c语言deviceClose();
}
else if(0==strcmp("QUERY", cmd))
{
deviceQuery();
}
else
{
return;
}
这种实现⽅法虽然也达到了⽬的,但似乎没有那么直观,如果控制命令较多时,容易产⽣混乱,增加了出错的⼏率。相对⽽⾔,switch 就清晰明了很多,那么能不能在 switch 中实现字符串的匹配呢?
在 C 语⾔中,switch 语句中的表达式必须是常量表达式,且必须是整型或者枚举类型,所以 switch 语句不能直接匹配字符串。重点来了,既然 switch 语句能够匹配枚举类型,那么创建⼀个包含所有控制命令的枚举类型,上述问题就迎刃⽽解了。
enum COMMAND { OPEN, CLOSE, QUERY };
enum COMMAND cmd = OPEN;
switch(cmd)
{
case OPEN:
deviceOpen();
break;
case CLOSE:
deviceClose();
break;
case QUERY:
deviceQuery();
break;
default:
break;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。