2016-05-23 154 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