2016-05-23 30 views
1

ich diese seltsamen Fehler immer unterWarnung: fehlender Abschluss "Zeichen [standardmäßig aktiviert]

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; 
} 

ich Fehler verstanden ist über char * string Linie Aber weiß nicht. wie Sie es beheben können

+0

Sie nicht entkommen müssen? –

+0

Ich habe versucht, innere doppelte Anführungszeichen durch Hinzufügen von "\" vor jedem zu lösen, ich bekomme diesen Fehler "error: stray" \ "in program' – Naroju

+0

jeder der Teile der Zeichenfolge sollte mit etwas ähnlich wie" \ n "beendet werden Beachten Sie den nachfolgenden Schrägstrich. Um es Ihnen leicht zu machen, schlagen Sie vor, eine Tabelle mit Zeigern auf Zeichenketten zu schreiben. Führen Sie dann mit einem beliebig langen Zeichenkettenpuffer jede Zeile der json-Befehle in diesen Puffer mit einem Aufruf von 'strcpy()' und mehreren Aufrufen von ' strcat() 'Stellen Sie sicher, dass Sie alle notwendigen maskierten doppelten Anführungszeichen enthalten und' \ n' enthalten, wo auch immer ein Zeilenumbruch benötigt wird, einschließlich am Ende der akkumulierten Zeichenfolge. – user3629249

Antwort

1

Sie müssen:

  1. " char zu entkommen, weil es ein besonderes Zeichen zu definieren, eine C-String-Literal verwendet wird.
  2. Für mehrzeilige Strings müssen Sie jede Zeile als eine einzelne C-String definieren mit "" jeweils für eine

So ist der resultierende Code

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

Vielen Dank es half – Naroju

+0

diese Antwort fehlt die Newline-Zeichen zwischen jeder Zeile des JSON-Befehls – user3629249

+0

@ user3629249 Ich schlug eine Lösung für das OP-Problem. Ich habe nicht versucht, den Befehl mit Json zu verwenden. – LPs

1

Sie müssen das Escape-Zeichen verwenden, wenn Sie Anführungszeichen in Anführungszeichen verwenden:

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

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

       "}"; 

Dies wird es tun.

+0

Ich habe versucht, innere doppelte Anführungszeichen durch Hinzufügen von "\" vor jedem zu lösen, ich bekomme diesen Fehler "Fehler: streunende" \ "in Programm" – Naroju

+0

Kopieren Sie meinen Code, ich habe es gerade getestet und es funktioniert. – Mirakurun

+0

Dies ist, was ich bekomme, wenn ich es ausdrucken: {"Sender": "Freuden der Programmierung", "Empfänger": ["123", "345", "654", "432"]} – Mirakurun