如何解决C如何将结构分组到一个数组中
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];
例如,我有一个这样的结构。然后,我通过一个文本文件填充该数组,其中同一机器人(由其编号标识)将获得一系列指令。说文本文件看起来像这样:
1动2000
1次停止
如果我运行此文件并填充数组bot,我将得到两个条目,bots [0]将告诉bot 1向前移动2000个单位,而bots [1]将告诉bot 1关闭两个命令,他们会将completeM设置为INCOMPLETE。问题出在这里:
阵列中的两个条目各自具有各自的状态,这不是应该的,我的阵列机器人将2000步和1停顿视为两个不同的机器人,每个机器人具有各自的状态。问题是我该怎么做,以便阵列可以识别出两条指令都绑定到同一机器人的事实。
我需要这样做,因为该程序要等到所有漫游器的状态都变为HALTED时才能结束,但是第一个条目永远不会被HALTED终止,因为它不需要它。 (如果条目具有processNAME HALTED,它将转到一个单独的函数,并且该函数会将漫游器的状态更改为HALTED)。
我考虑过将botNumber 1的所有内容放到位于现有bot数组顶部的另一个数组的入口中,但这似乎已被淘汰,任何专业人士都有更好的解决方案?
解决方法
我认为您的主要问题是概念问题,您正在将bot与流程混合在同一结构中。
您说的是:“数组中的两个条目都有各自的状态,事实并非如此”
尝试将其分为两个不同的结构,一个机器人将具有机器人信息和一系列流程结构,并且流程结构将具有其名称或是否完成的信息。
类似的东西:
#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];
可能更容易操纵
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。