Есть такой вопрос : написал задачу писать лог файл в память контроллера в формате CSV.
Формирую строку для записи в файл через sprintf, который пишет десятичные дроби с десятичным разделителем ".".
Хочу сменить десятичный разделитель, почитал маны. Узнаю что функции семейства printf используют настройки текущей локали.
В хелпе AS 4.10 читаю про локали:
В списке поддерживающих функции нахожу setlocale, которая и меняет текущую локаль. Читаю из справки по функции из хелпа AS:The <clocale> and <locale> libraries make it possible to handle cultural differences.
ПробуюОписание
setlocale — это средство, определенное ANSI C для настройки среды выполнения для международной сортировки и форматирования информации; localeconv сообщает о настройках текущей локали.
Это минимальная реализация, поддерживающая только обязательные значения "POSIX" и "C" для локали; строки, представляющие другие локали, не учитываются, если не определено _MB_CAPABLE.
Если определено _MB_CAPABLE, строки локали POSIX разрешены, следуя форме language[_TERRITORY][.charset][@modifier]
Код: Выделить всё
char* ptr = setlocale(LC_NUMERIC,"ru_RU.UTF-8"); // меняем локаль
sprintf(locname,"%s", setlocale(LC_NUMERIC, NULL)); // узнаем имя текущей локали
_MB_CAPABLE не определен, как я понимаю он должен был быть определен при сборке библиотеки...
Кто нибудь имел опыт с локалями в B&R X20??