Каков безопасный/портативный способ преобразования числа в строку (и наоборот)?
Я работаю в Linux, и мои настройки локали таковы, что когда я использую номера sprintf, у них есть «,» вместо «.» как разделитель.
Иногда мне так хочется, иногда нет :)
Я видел некоторые решения, которые подразумевают игру с настройками пользователей. Ясно, что этого делать не следует. Кто-то предложил использовать uselocale
snprintf: простой способ принудительно . как основание?
может кто-нибудь немного уточнить (похоже, что это ошибка в некоторых glibc (‹2.12)) и, если возможно, предоставить пример кода (например, макрос SNPRINTF_POSIX).
Я пробовал сам, но мои навыки C очень ограничены.
[редактировать]
Я нашел этот код [GO]Skywalker13 на Swisslinux.org после того, как написал свой вопрос. Есть мысли по этому поводу? А как насчет использования памяти? (Мне нужно сделать несколько вызовов этой функции)
#define _GNU_SOURCE
#include <locale.h>
#include <stdlib.h>
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;
}