用c语言写状态机
以下是一个简单的状态机示例,它处理一个二进制计数器:
#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,则回到空闲状态,否则计数器加一并输出计数器的当前值。
原文地址: http://www.cveoy.top/t/topic/bmcq 著作权归作者所有。请勿转载和采集!