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

文字列の各部分を "\ n"と似たように終わらせる必要があります。 – Naroju

+0

文字列の各部分を "\ n" \末尾にスラッシュがあることに注意してください。 char型の文字列へのポインタを書くことをお勧めします。次に、可変長の文字列バッファを使用して、 'strcpy()'を1回呼び出すだけでjsonコマンドの各行をそのバッファに渡します。 strcat() 'には必要なすべてのエスケープされた二重引用符が含まれていなければなりません。また、累積された文字列の終わりを含め、改行が必要な箇所に' \ n'を含めてください。 – user3629249

答えて

1

にあなたが持っている:それは C-文字列リテラルを定義するために使用される特殊文字があるのため

  1. "文字をエスケープします。あなたが各1

ため""を使用して、単一のC-Stringとして各行を定義する必要があり、複数行の文字列の場合

  • ので、結果のコードは

    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

    私は内部の二重引用符をエスケープしようとしましたが、それぞれの "\"を追加することで、エラー "エラー:stray" \ "in"プログラムが発生しました – Naroju

    +0

    私のコードをコピーして貼り付けました。 – Mirakurun

    +0

    これは、出力時に出力として得られるものです。 {"送付者": "プログラミングの楽しさ"、 "受信者":​​["123"、 "345"、 "654"、 "432"]} – Mirakurun

    関連する問題