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

avatar
作者
筋斗云
阅读量:0

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!