【发布时间】:2015-09-15 00:56:50
【问题描述】:
我正在尝试用 C 创建一个简单的有限状态机,但我对如何开始感到很困惑。我尝试在网上查找,但并没有真正为我解决这个问题。
我的目标是检查字符串是八进制、十六进制还是十进制。
要为八进制,字符串必须以 0 开头,后跟数字 0-7。 要为十六进制,字符串必须以 0x 或 OX 开头,后跟 (a-f, A-F, 0-9)
我创建状态的尝试是:
typedef enum {
ERROR,
OCTAL,
HEX,
DECIMAL
} stringStates;
现在,我将使用 switch 语句遍历整个字符串并在不同状态之间切换,直到我正确识别它属于哪个状态。
while (current_Position<=end_String-1)
{
switch( "input something here")
{
case 0:
//process string
break;
case 1:
//process string
break;
case 2:
//process string
break;
case 3:
//process string
break;
default:
break;
}
}
这个概念对我来说仍然很新,我很难理解它的实现。如果有人能解释一下,将不胜感激。
【问题讨论】:
-
第一次画图怎么样? (en.wikipedia.org/wiki/Finite-state_machine)
-
有不止一种方法可以做到这一点。你对函数指针有多满意?
-
先确定你的输入集,再画状态图或者转换表。
-
@Bret 此外,您将结果与状态混淆了......八进制,十六进制,十进制应该是您的状态机的最终结果。而不是它的状态
标签: c switch-statement state-machine