美文网首页编程派
C 语言 switch 语句匹配字符串的方法

C 语言 switch 语句匹配字符串的方法

作者: 羽墨志 | 来源:发表于2019-12-16 10:38 被阅读0次

在某些情形下,我们需要根据一些已知的字符串进行相应的处理,比如根据从串口接收到字符串命令执行操作。

假如要通过串口控制某个设备的开启、关闭以及查询等功能,其控制命令 cmd 分别为 OPENCLOSE、 和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))
{
    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 (ctl)
{
case OPEN:
    deviceOpen();
    break;

case CLOSE:
    deviceClose();
    break;

case QUERY:
    deviceQuery();
    break;

default:
    break;
}

相关文章

  • C 语言 switch 语句匹配字符串的方法

    在某些情形下,我们需要根据一些已知的字符串进行相应的处理,比如根据从串口接收到字符串命令执行操作。 假如要通过串口...

  • 雨点的成长2

    C语言循环语句 switch语句 格式: switch(标识符){ case a:...;break; c...

  • JavaScript switch语句的技巧

    switch语句的技巧 概述 switch语句对一个表达式求值,将结果与 case 子语句比较,如果匹配,则从 c...

  • ★05.语句

    条件语句 if语句 switch语句 与 C/C++ 的区别,case后面可以跟随任何表达式。 匹配操作用的是==...

  • js常用流程控制语句总结

    一、if语句 二、switch语句 JavaScript switch语句虽然参考的C语言的写法,但是有特殊性 s...

  • 第四章 Go语言中的控制语句

    控制语句 向c语言一样,常见的控制语句: if...else语句 switch...case语句 for语句 没有...

  • 初学C语言

    初学C语言——switch开关语句 #includeint main(int argc,const char * ...

  • js2-switch语句 for循环 break和continu

    switch语句 执行到break就结束switch语句 执行过程switch语句根据传入的值进行对比, 匹配ca...

  • Case Class与模式匹配

    模式匹配入门 在java语言中存在switch语句,例如: 上述scala代码展示了如何使用scala中的模式匹配...

  • 第6章 循环

    英文原版:P99 在第5章里,我们介绍了C语言的选择语句:if语句和switch语句。 本章我们介绍C语言的循环语...

网友评论

    本文标题:C 语言 switch 语句匹配字符串的方法

    本文链接:https://www.haomeiwen.com/subject/wvmrnctx.html