Я пишу TCP-сокет в C для отправки данных о местоположении для проекта, над которым я работаю.Копирование значений float в массив символов
До сих пор все работает, но я борюсь с этой, казалось бы, просто проблемой. Я пытаюсь создать строку JSON, которая будет отправлена через сокет. У меня есть массив символов (представитель строки) json
определяется как:
char json[1024];
С методом прототипа:
const char* build_json(void);
И тело метода:
const char* build_json(void) {
strcpy(json, "{");
strcat(json, "\"latitude\":");
sprintf(json, "%0.5f", latitude);
strcat(json, "}");
return json;
}
Я знаю, что latitude
является и должно быть float
примерно 5 знаков после запятой.
Но когда я звоню build_json();
, 38.925034}
это единственное, что возвращается. Почему это так? Похоже, что вызов sprintf
переписывает то, что уже было написано в json
.
Благодарим за помощь!
Но первое решение выглядит очень аккуратно! –
@BarmakShemirani Вопрос о вкусе, я думаю: P Там нет проверки переполнения, поэтому я предпочел бы использовать snprintf, чтобы убедиться. – szczurcio
Использование 'snprintf()' - мудрый совет здесь. При печати с ''% f ''результирующая строка может составлять сотни или тысячи байтов (думаю,' -DBL_MAX'). – chux