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

КОД:

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 каждого из них, я получаю эту ошибку «error: stray» \ «in program» – Naroju

+0

. Каждая из частей строки должна заканчиваться чем-то подобным «\ n», \ Обратите внимание на обратную косую черту. Чтобы упростить для вас, предложите написать таблицу указателей на строки символов. Затем, используя переменный длинный строковый буфер, передайте каждую строку команд json в этот буфер, используя один вызов 'strcpy()' и несколько вызовов на ' strcat() 'обязательно включите все необходимые экранированные двойные кавычки и включите' \ n', где требуется новая строка, в том числе в конце накопленной строки. – user3629249

ответ

1

Вы должны:

  1. избежать " полукокса из-за это специальный символ используется для определения C-струнной буквальным.
  2. Для нескольких строк линий необходимо определить каждую строку как один 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

Я попытался убежать из внутренних двойных кавычек, добавив «\» infront каждого из них, я получаю эту ошибку «error: stray» \ «in program' – Naroju

+0

Скопируйте/вставьте мой код, я просто протестировал его, и он работает. – Mirakurun

+0

Это то, что я получаю в качестве вывода, когда я распечатываю его: {«отправитель»: «радости программирования», «приемник»: [«123», «345», «654», «432»]} – Mirakurun

Смежные вопросы