c - 如何在 C 字符串中嵌入双引号?

标签 c string char strtok

我的字符串采用 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/

相关文章:

c - C 中 BST 递归的棘手段错误

C 字符数组无法正常工作

python - 使用 Python 的字符串的子字符串

C++如何检查变量是否为std::string类型?

java - 使用 ascii 码检查空格

C strlen错误答案

c - 动态数组堆栈结构 C

c - 使用 getc 读取文件并跳过以分号开头的行

c - scanf 没有正确存储输入

Java 方法与字符的混淆