.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl) .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH STRFMON 3 "1 ноября 2020 г." Linux "Руководство программиста Linux" .SH ИМЯ strfmon, strfmon_l \- преобразует денежное значение в строку .SH СИНТАКСИС .nf \fB#include \fP .PP \fBssize_t strfmon(char *\fP\fIs\fP\fB, size_t \fP\fImax\fP\fB, const char *\fP\fIformat\fP\fB, ...);\fP .PP \fBssize_t strfmon_l(char *\fP\fIs\fP\fB, size_t \fP\fImax\fP\fB, locale_t \fP\fIlocale\fP\fB,\fP \fB const char *\fP\fIformat\fP\fB, ...);\fP .fi .SH ОПИСАНИЕ Функция \fBstrfmon\fP() преобразует заданные денежные суммы в соответствии с текущей локалью и указанным форматом \fIformat\fP и помещает результат в символьный массив \fIs\fP размера \fImax\fP. .PP Функция \fBstrfmon_l\fP() производит то же действие, но используется локаль, заданная в \fIlocale\fP. Поведение \fBstrfmon_l\fP() не определёно, если значение \fIlocale\fP равно специальному объекту локали \fBLC_GLOBAL_LOCALE\fP (смотрите \fBduplocale\fP(3)) или описатель объекта локали не корректен. .PP Обычные символы, заданные в аргументе \fIformat\fP, копируются в \fIs\fP без преобразования. Определители преобразования начинаются с символа \(aq%\(aq. Непосредственно за ними может следовать ноль или более флагов: .TP \fB=\fP\fIf\fP Однобайтовый символ \fIf\fP используется в качестве числового символа\-заполнителя (для выравнивания слева, смотрите ниже). Если символ не указан, то используется символ пробела. .TP \fB\(ha\fP Не использовать группирующие символы, которые могут быть определены в текущей локали. По умолчанию, разделение на группы разрядов разрешено. .TP \fB(\fP или \fB+\fP Флаг ( указывает на то, что отрицательные суммы должны быть заключены в скобки. Флаг + указывает на то, что наличие знака у суммы должно обрабатываться стандартным способом, то есть зависит от локали, например может быть так, что в результате ничего не указывается для положительных сумм и «\-» для отрицательных. .TP \fB!\fP Пропустить текущий символ. .TP \fB\-\fP Выровнять все поля по левому краю. По умолчанию выравнивание по правому краю. .PP Далее может быть указана ширина поля: строка с десятичным числом, определяющая минимальную ширину поля в байтах. По умолчанию 0. Если результат меньше чем эта ширина, то он дополняется пробелами (слева, если установлен флаг выравнивания по левому краю). .PP Далее может быть указана ширина целой части числа: символ «#», за которым следует строка с десятичным числом. Если количество цифр слева от символа разделителя меньше, чем ширина целой части, то предоставление дополняется слева числовым символом\-заполнителем. Группирующие символы не учитываются при подсчете этой ширины поля. .PP Далее может быть указана точность десятичной части: символ «.», за которым следует строка с десятичным числом. Перед форматированием сумма будет округлена до указанного числа знаков. По умолчанию, точность задаётся в элементах \fIfrac_digits\fP и \fIint_frac_digits\fP текущей локали. Если десятичная точность равна 0, то разделитель целой и дробной части не печатается (символ\-разделитель определяется переменной \fBLC_MONETARY\fP и может отличаться от символа определенного в переменной \fBLC_NUMERIC\fP). .PP И, наконец, определение преобразования может заканчиваться символом преобразования. Существует три символа преобразования: .TP \fB%\fP (Если в строку необходимо включить этот символ, то он задаётся как «%%».) Помещает символ \(aq%\(aq в строку\-результат. .TP \fBi\fP Аргумент типа \fIdouble\fP преобразуется с использованием локального интернационального формата валюты. .TP \fBn\fP Аргумент типа \fIdouble\fP преобразуется с использованием локального национального формата валюты. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении функция \fBstrfmon\fP() возвращает количество символов, помещённых в массив \fIs\fP, без учёта конечного байта null, предоставляя строку, включающую конечный байт null. Иначе она устанавливает \fIerrno\fP в значение \fBE2BIG\fP, возвращает \-1, а содержимое массива не определено. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lb lb lb l l l. Интерфейс Атрибут Значение T{ \fBstrfmon\fP() T} Безвредность в нитях MT\-Safe locale T{ \fBstrfmon_l\fP() T} Безвредность в нитях MT\-Safe .TE .sp 1 .SH "СООТВЕТСТВИЕ СТАНДАРТАМ" POSIX.1\-2001, POSIX.1\-2008. .SH ПРИМЕРЫ Вызов .PP .in +4n .EX strfmon(buf, sizeof(buf), "[%\(ha=*#6n] [%=*#6i]", 1234.567, 1234.567); .EE .in .PP результат .PP .in +4n .EX [€ **1234,57] [EUR **1 234,57] .EE .in .PP с локалью \fInl_NL\fP. С локалями \fIde_DE\fP, \fIde_CH\fP, \fIen_AU\fP и \fIen_GB\fP: .PP .in +4n .EX [ **1234,57 €] [ **1.234,57 EUR] [ Fr. **1234.57] [ CHF **1\(aq234.57] [ $**1234.57] [ AUD**1,234.57] [ £**1234.57] [ GBP**1,234.57] .EE .in .SH "СМ. ТАКЖЕ" \fBduplocale\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3), \fBlocale\fP(7) .SH ЗАМЕЧАНИЯ Эта страница является частью проекта Linux \fIman\-pages\fP версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу \%https://www.kernel.org/doc/man\-pages/. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .