C語言 狀態機程式設計

2021-08-21 06:24:00 字數 863 閱讀 8982

狀態機原理:有限狀態機的工作原理如圖1所示,發生事件(event)後,根據當前狀態(cur_state) ,決定執行的動作(action),並設定下乙個狀態號(nxt_state)。
fsm的實現方式:

1) switch/case或者if/else

這無意是最直觀的方式,使用一堆條件判斷,會程式設計的人都可以做到,對簡單小巧的狀態機來說最合適,但是毫無疑問,這樣的方式比較原始,對龐大的狀態機難以維護。

2) 狀態表

維護乙個二維狀態表,橫座標表示當前狀態,縱座標表示輸入,表中乙個元素儲存下乙個狀態和對應的操作。這一招易於維護,但是執行時間和儲存空間的代價較大。

3) 使用state pattern

把乙個字串中的多個空格,縮減為乙個空格。

#include int get_input_type(char c)

int main(void)

else

if(state == 0 && input == 1)

else

if(state == 1 && input == 0)

else

if(state == 1 && input == 1)

if(state == 2 && input == 0)

else

if(state == 2 && input == 1)

i++;

}return 0;

}

C語言狀態機程式設計

輸入一段字串,字串由字母和分隔符 空格,逗號,句號等 組成,寫乙個函式統計該字串中的單詞數。狀態 typedef enum count state t count state t 判斷函式 static intis end char ch static intis division char ch ...

c語言輸出中文為亂碼 C語言狀態機程式設計思想

switch case或者if else 切換狀態,通過改變狀態機狀態,讓程式按設定的順序執行。有限狀態機由有限的狀態和相互之間的轉移構成,在任何時候只能處於給定數目的狀態中的乙個。當接收到乙個輸入事件時,狀態機產生乙個輸出,同時也可能伴隨著狀態的轉移。狀態機的原理如下 在當前狀態下,發生某個事件後...

狀態機 狀態機0

近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...