STRFMON(3) Manuel du programmeur Linux STRFMON(3)

strfmon, strfmon_l - Convertir des valeurs monétaires en chaînes de caractères

#include <monetary.h>
ssize_t strfmon(char *restrict s, size_t max,
                const char *restrict format, ...);
ssize_t strfmon_l(char *restrict s, size_t max, locale_t locale,
                const char *restrict format, ...);

La fonction strfmon() met en forme les valeurs monétaires transmises en fonction de la locale courante et des spécifications de la chaîne de format et place le résultat dans la chaîne de caractère s de taille max.

La fonction strfmon_l() réalise la même fonction mais se base sur les paramètres régionaux indiqués par locale. Le comportement de strfmon_l() est non défini si locale est l’objet de paramètres régionaux LC_GLOBAL_LOCALE (consultez duplocale(3)) ou n’est pas un identifiant d’objet de paramètres régionaux valable.

Les caractères ordinaires de format sont copiés dans s sans conversion. Les indicateurs de conversion sont introduits par un caractère « % ». Immédiatement à sa suite, il peut y avoir zéro ou plusieurs drapeaux parmi les suivants :

=f
Le caractère unique f sert comme caractère numérique de remplissage (à utiliser avec une précision à gauche, voir plus bas). Sans indication, il s'agit du caractère espace.
^
Ne pas utiliser les caractères de regroupement (par milliers par exemple) qui peuvent être définis pour la localisation en cours. Par défaut, le groupement est actif.
( or +
L'attribut « ( » indique que les valeurs négatives doivent être encadrées entre parenthèses. L'attribut « + » indique que le signe doit être traité de la manière par défaut, c'est-à-dire les valeurs précédées de l'indication locale de signe. Par exemple, rien pour les valeurs positives et « - » pour les négatives.
!
Omettre le symbole monétaire.
-
Justifier tous les champs à gauche. Par défaut, la justification est à droite.

Ensuite, peut venir un champ de largeur : un chiffre décimal indiquant la largeur minimale en octets. Par défaut, elle vaut 0. Un résultat plus petit que cette largeur est complété avec des espaces (à gauche à moins que la justification soit à gauche).

Ensuite, il peut y avoir une précision à gauche de la forme « # » suivie par une chaîne de chiffres décimaux. Si le nombre de chiffres à gauche de la virgule est inférieur à cette valeur, la représentation est complétée à gauche avec le caractère de remplissage. Les caractères de groupement ne sont pas comptés dans la largeur du champ.

Ensuite, il peut y avoir une précision à droite de la forme « . » suivie par une chaîne de chiffres décimaux. La valeur est arrondie à ce nombre de décimales avant d'être mise en forme. La valeur par défaut est précisée dans les champs frac_digits et int_frac_digits de la localisation en cours. Si la précision à droite est 0, aucun symbole décimal n'est affiché (le symbole décimal est déterminé par LC_MONETARY, et peut différer de celui indiqué dans LC_NUMERIC).

Finalement, la spécification de conversion doit se terminer par un caractère de conversion. Les trois caractères disponibles sont :

%
(Dans ce cas, la spécification entière doit être exactement « %% »). Placer un caractère « % » dans la chaîne de résultat.
Un argument de type double est converti en utilisant les formats internationaux des monnaies dans la localisation en cours.
Un argument de type double est converti en utilisant les formats nationaux des monnaies dans la localisation en cours.

La fonction strfmon() renvoie le nombre de caractères placés dans la chaîne s, sans compter le caractère NULL final, à condition que tout tienne dans le tampon fourni. Sinon, il remplit errno avec la valeur E2BIG et renvoie -1. Le contenu de la chaîne est indéfini dans ce cas.

Pour une explication des termes utilisés dans cette section, consulter attributes(7).

Interface Attribut Valeur
strfmon() Sécurité des threads MT-Safe locale
strfmon_l() Sécurité des threads MT-Safe

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

L'appel


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

1234.567, 1234.567);

affiche


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

dans la locale nl_NL. Les locales de_DE, de_CH, en_AU et en_GB donnent pour résultat


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

Cette page fait partie de la publication 5.13 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

22 mars 2021 Linux