1. NOM▲
strfmon - Convertir des valeurs monétaires en chaînes de caractères
2. SYNOPSIS ▲
#include <monetary.h>
ssize_t strfmon(char *s, size_t max, const char *format, ...);
3. DESCRIPTION ▲
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.
4. 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.
5. CONFORMITÉ ▲
Pas dans POSIX.1-2001. Présente sur plusieurs autres systèmes.
6. 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 ]
7. VOIR AUSSI ▲
8. COLOPHON ▲
Cette page fait partie de la publication 3.52 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/.
9. TRADUCTION ▲
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».