117.info
人生若只如初见

如何用C语言switch case构建状态机

在C语言中可以使用switch case语句来构建状态机。下面是一个简单的示例:

#include 

typedef enum {
    STATE_IDLE,
    STATE_RUNNING,
    STATE_PAUSED,
    STATE_STOPPED
} State;

int main() {
    State currentState = STATE_IDLE;
    char input;

    while(1) {
        switch(currentState) {
            case STATE_IDLE:
                printf("Currently in idle state. Press 'r' to start running.\n");
                break;
            
            case STATE_RUNNING:
                printf("Currently running. Press 'p' to pause, 's' to stop.\n");
                break;
            
            case STATE_PAUSED:
                printf("Currently paused. Press 'r' to resume, 's' to stop.\n");
                break;
            
            case STATE_STOPPED:
                printf("Currently stopped. Press 'r' to start running again.\n");
                break;
        }

        input = getchar();

        switch(currentState) {
            case STATE_IDLE:
                if(input == 'r') {
                    currentState = STATE_RUNNING;
                }
                break;
            
            case STATE_RUNNING:
                if(input == 'p') {
                    currentState = STATE_PAUSED;
                } else if(input == 's') {
                    currentState = STATE_STOPPED;
                }
                break;
            
            case STATE_PAUSED:
                if(input == 'r') {
                    currentState = STATE_RUNNING;
                } else if(input == 's') {
                    currentState = STATE_STOPPED;
                }
                break;
            
            case STATE_STOPPED:
                if(input == 'r') {
                    currentState = STATE_RUNNING;
                }
                break;
        }
    }

    return 0;
}

在这个示例中,我们定义了一个枚举类型State来表示状态机的不同状态。在主函数中,我们使用一个while循环来不断检查当前状态并根据输入改变状态。通过使用switch case语句,我们可以根据当前状态打印不同的提示信息,并根据输入来改变状态。这样就构建了一个简单的状态机。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe13aAzsIBAVUAlA.html

推荐文章

  • 如何在C语言的switch case中使用枚举

    在C语言中使用枚举类型在switch case语句中非常方便。首先需要定义一个枚举类型,然后在switch case中使用这个枚举类型的值来进行判断。以下是一个简单的示例:<...

  • C语言switch case与if else比较有何优势

    代码结构更清晰:使用switch case可以将多个条件分支组织在一起,使代码更易读,易于维护。 执行效率更高:在switch case中,编译器可以通过跳转表(jump table)...

  • C语言switch case可以嵌套使用吗

    在C语言中,switch case语句是可以嵌套使用的。也就是说,在switch case语句中可以再嵌套另一个switch case语句。这种嵌套使用switch case语句的情况通常出现在需...

  • C语言中switch case如何使用

    switch case语句用于根据表达式的值选择执行不同的代码块。在C语言中,switch case语句的基本语法如下:
    switch (expression) { case value1: // 代码块1 b...

  • C语言switch case有哪些常见陷阱

    忘记写break语句:在switch case语句中,每个case后面都应该加上break语句,否则程序会继续执行下一个case中的代码,导致逻辑错误。 case表达式不唯一:在switch...

  • C语言switch case是否支持区间判断

    C语言中的switch case语句不支持区间判断。switch case语句只能用于对特定值的判断,而无法直接用于判断区间。要实现区间判断,可以使用if语句结合逻辑运算符来实...

  • 如何优雅地在C语言中退出switch case

    在C语言中,可以使用break;语句来退出switch case。如下所示:
    switch (expression) { case 1: // do something break; case 2: // do something break; ca...

  • C语言switch case中default位置可以变动吗

    在C语言中,switch case语句中的default位置可以放在任意位置,并不一定非要放在最后。在switch case语句中,default是可选的,用来处理当没有任何case匹配时的情...