Каков безопасный / переносимый способ преобразовать число в строку (и наоборот)?
Я использую Linux, и мои настройки таковы, что когда я использую числа sprintf иметь "," вместо "." в качестве разделителя.
Иногда я хочу, чтобы они были такими, Иногда нет :)
Я видел некоторые решения, которые подразумевают игру с пользовательскими настройками. Ясно, что этого делать не следует. Кто-то предложил использовать uselocale
snprintf: простой способ заставить. как основание системы счисления?
может кто-нибудь немного уточнить (похоже, что он глючит на некоторых glibc (
Я пробовал себя, но мои навыки Си очень ограничены.
[править]
Я нашел этот код [GO] Skywalker13 на Swisslinux.org после того, как написал свой вопрос. Есть мысли по этому поводу? А как насчет использования памяти? (Мне нужно сделать множество вызовов этой функции)
#define _GNU_SOURCE
#include
#include
double
my_atof (const char *nptr)
{
double res;
locale_t new_locale;
new_locale = newlocale (LC_NUMERIC_MASK, "C", NULL);
res = strtod_l (nptr, NULL, new_locale);
freelocale (new_locale);
return res;
}