zion - strfmon
Nom
strfmon - Convertir des valeurs monétaires en chaînes de caractères.
Résumé
.nf #include <monetary.h> ssize_t strfmon(char * s , size_t max , const char * format , ...); .fi
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
.nf strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]", 1234.567, 1234.567); .fi |
[ fl **1234,57] [ NLG **1 234,57] |
[ 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..
Poster un commentaire