Функция strfmon() форматирует определенные суммы соответственно
определенному формату format и помещает результат в символьный
массив s размера max.
Обычные символы заданные в аргументе format копируются в s
без преобразования. Спецификаторы преобразования начинаются с символа `%'.
Непосредственно за ними могут следовать ноль или более флагов:
=f
Символ
f
используется в качестве символа-заполнителя (для выравнивания слева, см.
ниже). Когда символ не определен, используется символ пробела.
^
Не использовать никакие групповые символы, которые могут быть определены
в текущей локали. По умолчанию, разделение на группы разрядов разрешено.
( или +
Флаг ( указывает на то, что отрицательные суммы должны быть заключены в
скобки. Флаг + указывает на то, что сумма должна быть со знаком, это
зависит от локали, например, может быть так, что в результате ничего не
будет для положительных сумм и "-" для отрицательных.
!
Опускать символ валюты.
-
Выравнивание по левому краю для всех полей. По умолчанию, выравнивание
по правому краю.
Далее может быть указана ширина поля: десятичное число, определяющее
минимальную ширину поля в байтах. По умолчанию - 0. Если результат
меньше чем ширина, то он дополняется пробелами (слева, если установлен
флаг выравнивания по левому краю).
Далее может быть указана ширина целой части суммы: символ "#" за которым
следует десятичное число. Если в сумме меньше цифр, чем задано, тогда
сумма дополняется слева символом-заполнителем. Групповые символы не
учитываются при подсчете ширины поля.
Далее может быть указана точность десятичной части: символ "." за
которым следует десятичное число. Сумма будет округлена до определенного
числа знаков. По умолчанию, это определено в элементах
frac_digits
и
int_frac_digits
текущей локали. Если десятичная точность равна 0, то разделитель целой и
дробной части не печатается. (Символ-разделитель определяется переменной
LC_MONETARY и может отличаться от символа определенного в переменной
LC_NUMERIC.)
И наконец, определение преобразования может заканчиваться символом
преобразования. Существует три символа преобразования:
%
(Если в строку необходимо включить этот символ, то необходимо его
удвоить "%%".) Помещает символ `%' в строку-результат.
i
Аргумент вещественного типа преобразуется с использованием локального
интернационального формата валюты.
n
Аргумент вещественного типа преобразуется с использованием локального
национального формата валюты.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция strfmon() возвращает количество символов, помещенных в
массив s, не включая символ окончания строки NUL, который
заканчивает строку. Иначе она устанавливает
errno
в значение E2BIG, возвращает -1, а содержимое массива неопределено.
в голландской локали (с fl для флоринов (florijnen) и NLG для
нидерландских гульденов). Групповой символ может выглядеть очень
некрасиво. Неожиданно, что "fl" стоит впереди и за ним следует пробел, а
"NLG" стоит впереди и за ним следует два пробела. Это может быть ошибка
в файлах локали. Примеры для итальянской, австралийской, швейцарской и
португальской локалей