我有一个使用 udp 发送的字符串。现在我想读取字符串,对其进行标记并将其保存到 char 数组中。仅保存每个单词的第一个字母。所以我只从 element01 到 element05 得到 5 'e's。我在 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 );
}