gpt4 book ai didi

C/解析字符串,最简单的方法是什么

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:57 25 4
gpt4 key购买 nike

我有一个这样的字符串: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;

是否有如何显示最好和最方便的方法?

最佳答案

strtok AFAICR 不能在这样的嵌套循环中使用,因为它会自行管理全局状态。我建议首先解析每个以分号分隔的部分,然后按顺序处理它们 - 或者自己为分号情况实现类似于 strtok 的东西,然后在内部愉快地使用 strtok循环。

关于C/解析字符串,最简单的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7928943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com