У меня есть такая строка: 4;4=3;1=0,2=2,3=1,4=1,5=1;0003013340f59bce000002aaf01620e620198b2240002710;
Она разделена на разделы знаком ";"и каждый раздел может иметь одну или несколько пар ключ / значение, например 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
, показывающий лучший и наиболее удобный способ?