gpt4 book ai didi

c - JSON 格式字符串上的 strtok 分隔符问题

转载 作者:行者123 更新时间:2023-11-30 15:31:16 24 4
gpt4 key购买 nike

使用以下分隔符和子分隔符,我找不到将颁发者值作为整个字符串检索的方法,因为我已声明“,”作为字符串分隔符的一部分。请帮忙。

输入字符串是一个 char* 数组:(抱歉,字符串是一个证书)

 {"first name":"Jhon","thumbprint":"*********","issuer":"CN=dccw, OU=cswde, O=xswe, 
L=sdewc","validto":"Mon Jan 01 22:59:59 EST
2018","lastname":"Doe","userid":"DJhon","valid from":"Mon Aug 15
00:00:00 EDT 2011","subjectInfor":"************"}

代码

 char* delim = "{}";
char* subdelim = ":,";

char *str1, *token, *name, *value;

int parse_count = 0;
for (str1 = stringToParse; parse_count<num ; str1 = NULL) {
token = strtok(str1, delim);
if (token == NULL)
break;
name = strtok(token, subdelim);
value = strtok(NULL, subdelim);
if (name == NULL || value == NULL) {
continue;
}
strcpy (ptr->name, name);
strcpy (ptr->value, value);
ptr++;
parse_count++;

}
return name_values;
}

输出:

 printf("%s=%s\n", params->name, params->value);

first name=Jhon
last name=Doe
userid=DJhon

最佳答案

我认为使用 JSON 库更好,但简单的解析可以使用 sscanf 来完成。

#include <stdio.h>
#include <string.h>

int main(void){
char data[]="{\"first name\":\"Jhon\",\"thumbprint\":\"*********\",\"issuer\":\"CN=dccw, OU=cswde, O=xswe, L=sdewc\",\"validto\":\"Mon Jan 01 22:59:59 EST 2018\",\"lastname\":\"Doe\",\"userid\":\"DJhon\",\"valid from\":\"Mon Aug 15 00:00:00 EDT 2011\",\"subjectInfor\":\"************\"}";
char *contents = strtok(data, "{}");//remove '{' and '}' : note that is not included in the content
char key[128], value[128];
int len;
while(2==sscanf(contents, "\"%127[^\"]\":\"%127[^\"]\",%n", key, value, &len)){
if(!strcmp(key, "first name") || !strcmp(key, "lastname") || !strcmp(key, "userid"))
printf("%s=%s\n", key, value);
contents += len;
}
return 0;
}

关于c - JSON 格式字符串上的 strtok 分隔符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924596/

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