我的字符串采用 JSON 格式,这意味着它始终带有引号 ("
) 标记值和键。
尝试使用分隔符和子分隔符,我无法找到一种方法来添加引号作为分隔符的一部分而不会出现语法错误。我缺少一个步骤吗?尽量保持代码简单紧凑。
代码
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;
}
输入字符串是一个 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":"************"}
输出:
printf("%s=%s\n", params->name, params->value);
"first name"="Jhon"
"last name"="Doe"
"userid"="DJhon"
最佳答案
转义它应该可以解决您的问题...
char* subdelim = "\":,";
关于c - 如何在 C 字符串中嵌入双引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922872/