我有一个使用udp发送的字符串。现在我想读取字符串,将其标记并将其保存到char数组中。只保存每个单词的第一个字母。所以我只是从元素01到元素05获得5'e。我在Arduino工作,我知道一些C#,但没有C或C++。如何将字符串标记保存为字符变量?
//p_params->packetBuffer contains the following string:
//element01#element02#element03#element04#element05
void packtStriper(receivedPacket * p_params)
{
char delims[] = "#";
char *result = NULL;
int i = 0;
//Tokenize string - 'split' it on hash mark
result = strtok(p_params->packetBuffer, delims);
//Iterate through the tokens and save them to my list
while(result != NULL)
{
p_params->listData[i] = *result;
i++;
result = strtok(NULL, delims);
}
//Display the data just received
for(int j =0; j<i; j++)
{
Serial.print("Data ");
Serial.print(j);
Serial.print(": ");
Serial.println(p_params->listData[j]);
}
}
typedef struct receivedPacket
{
char * REQType;
char * confName;
unsigned int confData[64];
char listData[10];
char packetBuffer[UDP_BUFFER_SIZE];
int packetSize;
int inProduction;
}receivedPacket;
由于下面的代码打印完整的元素名称,我认为我可以使用结果。但是这也会返回一个错误。
char str[] = "element01#element02#element03#element04#element05";
char delims[] = "#";
char *result = NULL;
result = strtok(str, delims);
while(result != NULL) {
printf("result is \"%s\"\n", result);
result = strtok(NULL, delims);
}
那么这段代码是做你需要的吗? –
不,它只保存每个单词的第一个字母到数组 – Bildsoe