C++ 返回字符数组的不同部分

C++ 返回字符数组的不同部分,c++,c,arduino,C++,C,Arduino,我问了一个关于我的问题,多亏了@enhzflep,我解决了大部分问题。我的问题是如果我写46754!ABCDEFG12345#qwerwe到序列号,我想得到在“!”后面两个字符的AB。下面的代码完美地完成了这项工作。但是现在我需要得到'CD','EF',在'#'(我的例子中它的意思是'345')之前的三个字符,以及这些东西之间的整个东西,即'G12','G12'的大小取决于'!'和#。简言之,我想得到“!”之间字符数组的不同部分和# charpack[5]={0}; char命令[5]={0};

我问了一个关于我的问题,多亏了@enhzflep,我解决了大部分问题。我的问题是如果我写46754!ABCDEFG12345#qwerwe到序列号,我想得到在“!”后面两个字符的AB。下面的代码完美地完成了这项工作。但是现在我需要得到'CD','EF',在'#'(我的例子中它的意思是'345')之前的三个字符,以及这些东西之间的整个东西,即'G12','G12'的大小取决于'!'和#。简言之,我想得到“!”之间字符数组的不同部分和#

charpack[5]={0};
char命令[5]={0};
int指数=0;
bool-Seen=false;
无效设置(){
Serial.begin(9600);
}
void loop(){
while(Serial.available()>0){
接收到的字符=Serial.read();
如果(接收=='!')
{
所见=真实;
}
else if(接收=='#')
{
返回标准件(包装);
返回strdup(命令);
}
如果(seed==true){

if(Index2&&Index我自己无法测试任何代码,但我认为这应该可以。将
命令的分配更改为200字节。您注释掉的代码似乎基本正确。我只是做了一些小的更改:

if(Index>=2){
    command[Index-2] = received;
    Index++;
    Serial.print(received);
}

你现在得到的结果是什么?我得到了我预期的AB。但是我需要得到CD,EF,3个字符之前#,以及它们之间的全部内容。这段代码之后只返回n个字符!这取决于我在if中写的内容(IndexIs是已知的长度吗?不,这取决于我写到序列的内容。但只有“G12”的长度(如上所述)更改其他内容的长度是已知的。是否存在最大大小?我只是想知道您是否要动态分配内存来存储命令。这没有帮助。您能否更具体地说明结果?我想我需要为每个部分使用不同的字符数组。例如,前两个元素应存储在一个数组中,另一个元素应存储在一个数组中2应该在另一个数组中,以此类推。但我不知道怎么做it@ReduXCompletedy你为什么认为你需要这样做?你能用输入的代码告诉我结果吗?它没有打印任何东西
if(Index>=2){
    command[Index-2] = received;
    Index++;
    Serial.print(received);
}