用C语言写一个简单的状态机
时间: 2023-10-21 19:05:46 浏览: 32
好的,请看下面的代码:
```
#include <stdio.h>
// 定义状态枚举
enum State {
STATE_IDLE,
STATE_RUNNING,
STATE_STOPPED
};
int main() {
// 初始化状态
enum State state = STATE_IDLE;
char input;
while (1) {
// 打印当前状态
switch (state) {
case STATE_IDLE:
printf("IDLE\n");
break;
case STATE_RUNNING:
printf("RUNNING\n");
break;
case STATE_STOPPED:
printf("STOPPED\n");
break;
}
// 获取输入
printf("Enter command (r:run, s:stop, q:quit): ");
scanf(" %c", &input);
// 处理输入
switch (input) {
case 'r':
if (state == STATE_IDLE) {
state = STATE_RUNNING;
} else {
printf("Invalid command\n");
}
break;
case 's':
if (state == STATE_RUNNING) {
state = STATE_STOPPED;
} else {
printf("Invalid command\n");
}
break;
case 'q':
return 0;
default:
printf("Invalid command\n");
break;
}
}
return 0;
}
```
这是一个简单的状态机,包含三个状态:IDLE、RUNNING、STOPPED。程序会不断循环,打印当前状态,等待用户输入命令。根据用户输入的命令,程序会切换状态。其中,只有在 IDLE 状态下才能切换到 RUNNING 状态,只有在 RUNNING 状态下才能切换到 STOPPED 状态。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)