首页主机资讯如何用C语言switch case构建状态机

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

时间2024-06-14 23:00:03发布访客分类主机资讯浏览292
导读:在C语言中可以使用switch case语句来构建状态机。下面是一个简单的示例: #include <stdio.h> typedef enum { STATE_IDLE, STATE_RUNNING,...

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

#include <
    stdio.h>


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语句,我们可以根据当前状态打印不同的提示信息,并根据输入来改变状态。这样就构建了一个简单的状态机。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何用C语言switch case构建状态机
本文地址: https://pptw.com/jishu/682354.html
C语言switch case有哪些常见陷阱 C语言switch case中default位置可以变动吗

游客 回复需填写必要信息