Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       strfmon, strfmon_l - преобразует денежное значение в строку

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <monetary.h>

       ssize_t strfmon(char s[restrict .max], size_t max,
                       const char *restrict format, ...);
       ssize_t strfmon_l(char s[restrict .max], size_t max, locale_t locale,
                       const char *restrict format, ...);

ОПИСАНИЕ

       Функция  strfmon()  преобразует заданные денежные суммы в соответствии с текущей локалью и
       указанным форматом format и помещает результат в символьный массив s размера max.

       Функция strfmon_l() производит то же действие, но используется локаль, заданная в  locale.
       Поведение  strfmon_l()  не  определёно,  если  значение  locale равно специальному объекту
       локали LC_GLOBAL_LOCALE (смотрите duplocale(3)) или описатель объекта локали не корректен.

       Ordinary characters in format are copied to s without conversion.   Conversion  specifiers
       are  introduced by a '%' character.  Immediately following it there can be zero or more of
       the following flags:

       =f     Однобайтовый символ f используется в качестве  числового  символа-заполнителя  (для
              выравнивания  слева,  смотрите ниже). Если символ не указан, то используется символ
              пробела.

       ^      Не использовать группирующие символы,  которые  могут  быть  определены  в  текущей
              локали. По умолчанию, разделение на группы разрядов разрешено.

       ( или +
              Флаг  (  указывает  на  то, что отрицательные суммы должны быть заключены в скобки.
              Флаг + указывает на то, что наличие знака у суммы должно обрабатываться стандартным
              способом,  то  есть  зависит  от  локали, например может быть так, что в результате
              ничего не указывается для положительных сумм и «-» для отрицательных.

       !      Пропустить текущий символ.

       -      Выровнять все поля по левому краю. По умолчанию выравнивание по правому краю.

       Далее может быть указана ширина поля: строка с десятичным числом, определяющая минимальную
       ширину  поля  в  байтах.  По  умолчанию  0.  Если  результат  меньше чем эта ширина, то он
       дополняется пробелами (слева, если установлен флаг выравнивания по левому краю).

       Далее может быть указана ширина целой части числа: символ «#», за которым следует строка с
       десятичным  числом.  Если  количество цифр слева от символа разделителя меньше, чем ширина
       целой  части,  то  предоставление  дополняется   слева   числовым   символом-заполнителем.
       Группирующие символы не учитываются при подсчете этой ширины поля.

       Далее  может быть указана точность десятичной части: символ «.», за которым следует строка
       с десятичным числом. Перед форматированием  сумма  будет  округлена  до  указанного  числа
       знаков.  По умолчанию, точность задаётся в элементах frac_digits и int_frac_digits текущей
       локали. Если десятичная точность  равна  0,  то  разделитель  целой  и  дробной  части  не
       печатается  (символ-разделитель  определяется переменной LC_MONETARY и может отличаться от
       символа определенного в переменной LC_NUMERIC).

       И,  наконец,  определение  преобразования  может  заканчиваться  символом  преобразования.
       Существует три символа преобразования:

       %      (In this case, the entire specification must be exactly "%%".)  Put a '%' character
              in the result string.

       i      Аргумент типа double преобразуется с использованием  локального  интернационального
              формата валюты.

       n      Аргумент  типа  double  преобразуется  с  использованием  локального  национального
              формата валюты.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении функция strfmon() возвращает  количество  символов,  помещённых  в
       массив  s,  без  учёта конечного байта null, предоставляя строку, включающую конечный байт
       null. Иначе она устанавливает errno в значение E2BIG, возвращает -1, а содержимое  массива
       не определено.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌─────────────────────────────────────────────────┬──────────────────────┬────────────────┐
       │ИнтерфейсАтрибутЗначение       │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │strfmon()                                        │ Безвредность в нитях │ MT-Safe locale │
       ├─────────────────────────────────────────────────┼──────────────────────┼────────────────┤
       │strfmon_l()                                      │ Безвредность в нитях │ MT-Safe        │
       └─────────────────────────────────────────────────┴──────────────────────┴────────────────┘

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008.

ПРИМЕРЫ

       Вызов

           strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
                   1234.567, 1234.567);

       результат

           [€ **1234,57] [EUR **1 234,57]

       с локалью nl_NL. С локалями de_DE, de_CH, en_AU и en_GB:

           [ **1234,57 €] [ **1.234,57 EUR]
           [ Fr. **1234.57] [ CHF **1'234.57]
           [ $**1234.57] [ AUD**1,234.57]
           [ £**1234.57] [ GBP**1,234.57]

СМ. ТАКЖЕ

       duplocale(3), setlocale(3), sprintf(3), locale(7)

ПЕРЕВОД

       Русский    перевод    этой    страницы    руководства   был   сделан   Alexander   Golubev
       <fatzer2@gmail.com>,  Azamat  Hackimov  <azamat.hackimov@gmail.com>,   Hotellook,   Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.