C 使用嵌套结构存储数据

C 使用嵌套结构存储数据,c,pointers,struct,C,Pointers,Struct,我正在尝试为基于文本的菜单系统存储导航信息,但不确定最好的方法。每个菜单都有一个状态号,包含几个命令,每个命令都指向另一个状态。命令的数量随着每个状态的不同而不同,命令的长度——“1”、“Y”、“myfilename”在不同的点上都是有效的命令 我目前的想法是使用嵌套结构,并使用指针来处理 可变命令长度/数量: // Smallest useful unit - a single command-state pair typedef struct { char *command;

我正在尝试为基于文本的菜单系统存储导航信息,但不确定最好的方法。每个菜单都有一个状态号,包含几个命令,每个命令都指向另一个状态。命令的数量随着每个状态的不同而不同,命令的长度——“1”、“Y”、“myfilename”在不同的点上都是有效的命令

我目前的想法是使用嵌套结构,并使用指针来处理 可变命令长度/数量:

// Smallest useful unit - a single command-state pair
typedef struct {
    char *command;
    uint16 next_state;
} cs;

cs test1 = {"1", 100};
cs test2[] = {{"foo", 200}, {"bar", 201}};

// Every command-state pair for a particular state
typedef struct {
    uint8 command_count;
    cs *all_cs[];
} one_state;

one_state all_states[NUMBER_OF_STATES];
我希望以这样的方式存储导航信息: 它很容易索引特定状态的命令,以便 测试用户是否输入了有效的命令


有没有更好的办法,还是我走对了路?感谢您的回复。

我不太明白您到底想做什么,但您可能希望尝试将(相当随意的)uint16 next_状态替换为one_状态*,以便您可以按名称引用每个状态。我在one_state结构中没有看到任何uint16“state number”变量,因此我不确定您计划如何使用next_state。您可以研究C语言中的状态机实现,但大多数都会针对速度而不是可读性进行优化。如果你明确说明你计划如何使用这个数据结构,我会更有帮助。啊-我现在明白你为什么感到困惑了。那是因为我试图做的是荒谬的。我按照你的建议做了,并研究了状态机实现,现在我走上了正确的轨道。非常感谢。