C语言编码实现 一个状态机
时间: 2024-11-04 18:11:40 浏览: 17
C语言高效有限状态机(FSM)详细设计说明书.docx
在C语言中,我们可以使用结构体、枚举和函数来实现一个简单的状态机。这里是一个基本的例子,假设我们有一个简单的状态机,它有两个状态:等待(Wait)和处理(Process),每个状态都有对应的处理动作:
```c
typedef enum {
WAITING = 0,
PROCESSING
} State;
typedef struct {
State currentState;
void (*processState)(void);
} StateMachine;
// 动作函数
void waitAction(void) {
printf("当前状态: 等待...\n");
}
void processAction(void) {
printf("当前状态: 处理...\n");
}
// 初始化状态机
StateMachine machine = {WAITING, &waitAction};
// 更新状态并执行相应动作
void changeState(State nextState) {
if (nextState != machine.currentState) {
machine.processState = (nextState == PROCESSING) ? &processAction : &waitAction;
machine.currentState = nextState;
}
}
int main() {
while (true) {
// 模拟用户输入决定状态转换
int userInput;
scanf("%d", &userInput);
switch (userInput) {
case 0: // 转换到等待状态
changeState(WAITING);
break;
case 1: // 转换到处理状态
changeState(PROCESSING);
break;
default:
printf("无效输入\n");
}
}
return 0;
}
阅读全文