Как указал @DavidSchwartz, причина ошибки Segmentation fault (core dumped)
связана с указателем jsonString
, который в данный момент не инициализирован (то есть не , указывающим на что-либо). Следовательно, sprintf
пишет в случайное место, которое может работать или не работать время от времени.
Чтобы исправить это, вы можете статически назначить пространство переменной jsonString
при ее объявлении, например:
...
char jsonString[256];
...
Это означает, что вы можете иметь строку длиной до 255
символов (1
дополнительный символ, зарезервированный для \0
). Кроме того, вы можете динамически распределять пространство, используя malloc
:
...
char *jsonString = (char *)malloc(sizeof(char) * 256);
// Your code here
free(jsonString);
...
В этом случае вы должны не забыть освободить выделение в конце вашей функции, используя free
, иначе вы потеряете память. Если вы еще не узнали о динамической памяти, см. Когда и зачем использовать malloc? .
P.S .: Если вы работаете в Linux, я настоятельно рекомендую использовать valgrind
, если у вас есть ошибки, связанные с памятью. Этот инструмент, скорее всего, подскажет, где вы допустили ошибку. Обратитесь к Краткое руководство Valgrind для получения дополнительной информации.