Provided by: manpages-fr_1.67.0-1_all bug

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

DESCRIPTION

       La  fonction strfmon() met en forme les valeurs transmises, en fonction
       des spécification 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 drapeau
       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
       chaine  s,  sans  compter  le caractère NUL final, à condition que tout
       tienne dans le buffer fourni.  Sinon, il rempli errno  avec  la  valeur
       E2BIG  et renvoie -1. Le contenu de la chaîne est indéfini dans ce cas.

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.  Etonnament, 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)

TRADUCTION

       Christophe Blaess, 2001-2003..