Provided by: manpages-ru-dev_4.21.0-2_all 

ИМЯ
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
или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03 5 февраля 2023 г. strfmon(3)