NOM
strfmon - Convertir des valeurs monétaires en chaînes de caractères.
SYNOPSIS
#include <monetary.h>
ssize_t strfmon(char *s, size_t max, const char *format, ...);
La fonction strfmon() met en forme les valeurs transmises, en fonction
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.
Les caractères ordinaires de format sont copié 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 signe 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 « # » suivi
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 « . » suivi
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.
i Un argument de type double est converti en utilisant les formats
internationaux des monnaies dans la localisation en cours.
n Un argument de type double est converti en utilisant les formats
nationaux des monnaies dans la localisation en cours.
VALEUR RENVOYÉE
La fonction strfmon() renvoie le nombre de caractères placés dans la
chaîne s, sans compter le caractère nul final, à condition que tout
tienne dans le tampon fourni. Sinon, il rempli errno avec la valeur
E2BIG et renvoie -1. Le contenu de la chaîne est indéfini dans ce cas.
CONFORMITÉ
Pas dans POSIX.1-2001. Présente sur plusieurs autres systèmes.
EXEMPLE
L’appel
strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
1234.567, 1234.567);
affiche
[ fl **1234,57] [ NLG **1 234,57]
Dans la localisation hollandaise (fl étant « florijnen » et NLG
«Netherlands Guilders »). Le caractère de groupement est horrible car
il prend autant de place qu’un chiffre, alors qu’il ne devrait occuper
qu’un demi-espace, ce qui peut induire en erreur. Étonnamment, le
« fl » est précédé et suivi par un espace, et « NLG » est précédé par
un espace et suivi par deux. Il s’agit peut-être d’un bogue dans le
fichier de localisation. Les localisations italienne, australienne,
suisse, et portugaise donnent
[ L. **1235] [ ITL **1.235]
[ $**1234.57] [ AUD **1,234.57]
[Fr. **1234,57] [CHF **1.234,57]
[ **1234$57Esc] [ **1.234$57PTE ]
VOIR AUSSI
setlocale(3), sprintf(3), locale(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Nicolas François
<nicolas.francois@centraliens.net> et l’équipe francophone de
traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».