以下是一个简单的状态机示例,它处理一个二进制计数器:

#include <stdio.h>

// 定义状态机的状态
typedef enum {
    STATE_IDLE,     // 空闲状态
    STATE_COUNTING  // 计数状态
} State;

int main() {
    State state = STATE_IDLE;  // 初始化状态机状态
    int count = 0;            // 初始化计数器
    int input;                // 定义输入变量

    while (1) {
        // 获取输入
        printf("Enter 0 to stop, 1 to start counting: ");
        scanf("%d", &input);

        // 根据当前状态处理输入
        switch (state) {
            case STATE_IDLE:
                if (input == 1) {
                    state = STATE_COUNTING;  // 进入计数状态
                    printf("Counting...\n");
                }
                break;

            case STATE_COUNTING:
                if (input == 0) {
                    state = STATE_IDLE;      // 回到空闲状态
                    printf("Stopped counting.\n");
                } else {
                    count++;                // 计数器加一
                    printf("%d\n", count);
                }
                break;

            default:
                printf("Error: Invalid state.\n");
                return 1;
        }
    }

    return 0;
}

在上面的示例中,状态机有两个状态:空闲状态和计数状态。在空闲状态下,如果输入为 1,则进入计数状态;在计数状态下,如果输入为 0,则回到空闲状态,否则计数器加一并输出计数器的当前值。

用c语言写状态机

原文地址: http://www.cveoy.top/t/topic/bmcq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录