Arrays C如何将结构分组到一个数组中

Arrays C如何将结构分组到一个数组中,arrays,c,struct,Arrays,C,Struct,例如,我有一个这样的结构。我通过一个文本文件填充这个数组,在这个文本文件中,同一个bot(由其编号标识)将获得一系列指令。假设文本文件如下所示: 2000年1月1日 1停止 如果我运行此文件并填充阵列机器人程序,我将得到两个条目,机器人程序[0]将告诉机器人程序1向前移动2000个单位,机器人程序[1]将告诉机器人程序1关闭,但两个机器人程序都将Complete项设置为Complete。问题是: 数组中的两个条目都有各自的状态,但情况不应该如此。我的数组机器人将1 move 2000和1 hal

例如,我有一个这样的结构。我通过一个文本文件填充这个数组,在这个文本文件中,同一个bot(由其编号标识)将获得一系列指令。假设文本文件如下所示:

2000年1月1日

1停止

如果我运行此文件并填充阵列机器人程序,我将得到两个条目,机器人程序[0]将告诉机器人程序1向前移动2000个单位,机器人程序[1]将告诉机器人程序1关闭,但两个机器人程序都将Complete项设置为Complete。问题是:

数组中的两个条目都有各自的状态,但情况不应该如此。我的数组机器人将1 move 2000和1 halt视为两个不同的机器人,每个机器人都有自己的状态。问题是如何使数组能够识别这两条指令绑定到同一个bot的事实

我之所以需要它,是因为程序应该在所有机器人程序都处于停止状态之前结束,但是第一个条目永远不能停止,因为它不调用它。(如果一个条目已暂停processNAME,它将转到一个单独的函数,该函数将bot的状态更改为暂停)


我曾想过将BotNo.1的所有内容都放入另一个数组的条目中,该数组位于现有机器人数组的顶部,但这似乎过于致命,任何专业人士都有更好的解决方案吗?

我认为您的主要问题是概念问题,您在相同的结构中将机器人与流程混合在一起

你说过:“数组中的两个条目都有各自的状态,这不应该是这样的”

尝试将其分为两个不同的结构,bot结构将包含bot infos和一个流程结构数组,流程结构将包含其名称或是否完成的信息

比如:

enum state{READY, RUNNING, HALTED}
enum completeMove{COMPLETE, INCOMPLETE}
struct bot {
    int botNumber;
    char processName[MAX_PROCESSNAME_LEN];
    enum state status;
    enum completeMove completeM;
}bots[MAX_BOTS];

可能更容易操纵

那太疯狂了,我甚至不知道你能做到,谢谢你的回答。我只是想澄清一下,我将如何引用不同的字段?我现在是否将processName称为:bots[I].process[I].processName?我想我还需要检查一下是否。。假设processID为1的bot已经存在,如果存在,找到它的索引并将进程存储到该条目的进程结构中?这似乎非常困难,但双结构方法确实是一种方法。bots[i].process[j]。processName:exact,就是这种方法。如果您执行许多短函数(如addProcess、executeProcess),则“这似乎非常困难”。不会有事的
#define MAX_BOTS 10
#define MAX_PROCESS 50

#define PROCESS_NAME_SIZE 256

enum state{READY, RUNNING, HALTED};
enum completeMove{COMPLETE, INCOMPLETE};
struct bot {
    int botId; // cf botNumber
    enum state status ; // status of the bot : botId

    struct {
      char processName[PROCESS_NAME_SIZE] ;
      enum completeMove completeM;
    } process [MAX_PROCESS];
}bots[MAX_BOTS];