: 4;4=3;1=0,2=2,3=1,4=1,5=1;0003013340f59bce000002aaf01620e620198b2240002710;
C /解析字符串,什么是我有一个这样的字符串的最简单的方法
它分离成部分“;”并且每个部分都可以有一个或多个键/值对,如5 = 1等等,如您所见。 我想解析它在纯C,我开始与strtok
工作,我在我的代码显示在这里:
const wuint8 section_delimiter[] = ";";
const wuint8 field_delimiter[] = ",";
const wuint8 value_delimiter[] = "=";
printf("%s\n",data->msg);
token = strtok(data->msg,section_delimiter);
while(token != NULL) {
indicator = atoi(token);
printf("indicator: %d\n", indicator);
switch(indicator) {
case TYPE_1: {
printf("type: %d\n",TYPE_1);
wuint16 i, headerType, headerSubType;
for(i = 1; i < TP_MAX; i++) {
if(i == atoi(token)) {
token = strtok(NULL,value_delimiter);
headerType = i;
headerSubType = atoi(token);
break;
}
}
break;
}
case TYPE_2: {
printf("type: %d\n",TYPE_3);
break;
}
case TYPE_3: {
printf("type: %d\n",TYPE_3);
break;
}
case TYPE_4: {
printf("type: %d\n",TYPE_4);
break;
}
我不知道如何正确地做到这一点。 它也变得复杂了,因为不是每个字符串都有相同的结构,有时只有一个或两个部分可以存在。例如:3;4=3;1=0,2=2,3=1,4=1,5=1;
是否有how to
这样做是否显示最好和最方便的方式?
请在您的案例中定义“最好”,或删除该条款。 –
为真。改为“最简单”:) – nyyrikki
我会说:分而治之。首先将该行分成三部分,由';'分隔。比:处理单独的部分,也许处于子功能。子功能也可以处理空白部分。 – wildplasser