2016-05-23 148 views
1

我得到低于这个奇怪的错误警告:缺少终端“字[默认启用]

json.c:81:19: warning: missing terminating " character [enabled by default] 
json.c:81:3: error: missing terminating " character 
json.c:82:32: error: expected ‘,’ or ‘;’ before ‘:’ token 
json.c:90:22: warning: missing terminating " character [enabled by default] 
json.c:90:21: error: missing terminating " character 

CODE:

int main() 
{ 
    char * string = "{ 
        "sender" : "joys of programming", 

        "receiver": [ "123", 
           "345", 
           "654", 
           "432" 
           ] 

       }"; 
printf("JSON string: %sn", string); 
json_object * jobj = json_tokener_parse(string); 
json_parse(jobj); 
return 0; 
} 

我的理解误差约为char * string线,但不知道。如何修复它

+0

你不需要逃避? –

+0

我试图通过添加“\”infront的每个内部双引号,我得到这个错误'错误:在程序中的错误“\” – Naroju

+0

每个字符串的部分应该以类似于“\ n” \注意尾部反斜线。为了方便您,建议编写一个指向char字符串的指针表,然后使用不同的长字符串缓冲区,通过调用'strcpy()'和多次调用' strcat()'一定要包含所有必要的转义双引号,并且在需要换行符的地方包括'\ n',包括累加字符串的末尾。 – user3629249

回答

1

你必须:

  1. 逃脱"字符,因为它是用来定义一个 C-字符串文字一个特殊字符。
  2. 对于多行字符串你必须定义每一行使用""为每一个

所以一个C字符串,生成的代码是

char * string = "{" 
        "\"sender\" : \"joys of programming\"," 
        "\"receiver\": [ \"123\"," 
            "\"345\"," 
            "\"654\"," 
            "\"432\"" 
           "]" 
       "}"; 
+0

谢谢帮助 – Naroju

+0

这个答案缺少json命令的每一行之间的换行符 – user3629249

+0

@ user3629249我提出了OP问题的解决方案。我没有试过使用json命令。 – LPs

1

在引号内使用引号时需要使用转义字符

char * string = "{ " 
        "\"sender\" : \"joys of programming\"," 

        "\"receiver\": [ \"123\"," 
            "\"345\"," 
            "\"654\"," 
            "\"432\"" 
           "]" 

       "}"; 

这是要做到这一点。

+0

我试图通过添加“\”infront的每个内部双引号,我得到这个错误'错误:杂散“\”在程序中' – Naroju

+0

复制/粘贴我的代码,我只是测试它,它的工作原理。 – Mirakurun

+0

这是当我打印输出时得到的输出: {“sender”:“编程的乐趣”,“receiver”:[“123”,“345”,“654”,“432”]} – Mirakurun