strfmon(3)

NUME
strfmon, strfmon_l - convertește o valoare monetară într-un șir de caractere

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#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, ...);

DESCRIERE
Funcția strfmon() formatează suma monetară specificată în conformitate cu configurația regională curentă și cu specificația de format format și plasează rezultatul în matricea de caractere s de dimensiune max.

Funcția strfmon_l() îndeplinește aceeași sarcină, dar utilizează configurația regională specificată de locale. Comportamentul funcției strfmon_l() este nedefinit în cazul în care locale este obiectul parametru special de configurație regională LC_GLOBAL_LOCALE (a se vedea duplocale(3)) sau nu este un gestionar de obiect de configurație regională valid.

Caracterele obișnuite din format sunt copiate în s fără conversie. Specificatorii de conversie sunt introduși de un caracter „%”. Imediat după acesta pot exista zero sau mai multe dintre următoarele fanioane:

=f  Caracterul de un singur octet f este utilizat drept caracter de umplere numerică (pentru a fi utilizat cu o precizie la stânga, a se vedea mai jos). Atunci când nu este specificat, se utilizează caracterul spațiu.

^   Nu utilizează niciun caracter de grupare care ar putea fi definit pentru configurația regională curentă. În mod implicit, gruparea este activată.

( sau +
    Simbolul „(” indică faptul că sumele negative trebuie să fie incluse între paranteze. Simbolul „+” indică faptul că semnele trebuie tratate în mod implicit, adică sumele sunt precedate de indicația de semn din regiunea respectivă, de exemplu, nimic pentru valori pozitive, „-” pentru valori negative.

!   Omite simbolul monetar.

-   Aliniază la stânga toate câmpurile. Valoarea implicită este alinierea la dreapta.

În continuare, poate exista o lățime a câmpului: un șir de cifre zecimale care specifică o lățime minimă a câmpului în octeți. Valoarea implicită este 0. Un rezultat mai mic decât această lățime este completat cu spații (în stânga, cu excepția cazului în care a fost indicat fanionul aliniere-stânga).

În continuare, poate exista o precizie stânga de forma „#” urmată de un șir de cifre zecimale.În cazul în care numărul de cifre din stânga caracterului zecimal „,” este mai mic decât acesta, reprezentarea este umplută în stânga cu caracterul de umplere numeric. Caracterele de grupare nu sunt luate în considerare în această lățime de câmp.

În continuare, poate exista o precizie la dreapta de forma „.” urmată de un șir de cifre zecimale. Suma care se formatează este rotunjită la numărul specificat de cifre înainte de formatare. Valoarea implicită este specificată în elementele frac_digits și int_frac_digits din configurația regională curentă. Dacă precizia dreaptă este 0, nu se imprimă niciun caracter zecimal „. sau ,”; (caracterul zecimal aici este determinat de LC_MONETARY și poate fi diferit de cel specificat de LC_NUMERIC).

În cele din urmă, specificația de conversie trebuie să se încheie cu un caracter de conversie. Cele trei caractere de conversie sunt

%   În acest caz, întreaga specificație trebuie să fie exact „%%”. Introduce un caracter „%” în șirul rezultat.

i   Un argument de tip double este convertit folosind formatul internațional al monedei locale.

n   Un argument de tip double este convertit folosind formatul național al monedei locale.

VALOAREA RETURNATĂ
Funcția strfmon() returnează numărul de caractere plasate în matricea s, fără a include octetul nul de terminare, cu condiția ca șirul, inclusiv octetul nul de terminare, să încapă. În caz contrar, configurează errno la E2BIG, returnează -1, iar conținutul matricei este nedefinit.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
strfmon() | Siguranța firelor | MT-Safe locale
strfmon_l() | Siguranța firelor | MT-Safe

STANDARDE
POSIX.1-2008.

ISTORIC
POSIX.1-2001.

EXEMPLE
Apelarea

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

produce

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

în configurația regională nl_NL. Configurațiile regionale de_DE, de_CH, en_AU și en_GB produc următoarele rezultate

    [ **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]

CONSULTAȚI ȘI
duplocale(3), setlocale(3), sprintf(3), locale(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.