Linux |
CentOS 5.3 |
|
strfmon(3) |
strfmon − Convertir des valeurs monétaires en chaînes de caractères. |
#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. |
La fonction strfmon() renvoie le nombre de caractères placés dans la chaîne s, sans compter l’octet 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. |
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] |
Pas dans POSIX.1-2001. Présente sur plusieurs autres systèmes. |
setlocale(3), sprintf(3), locale(7) |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 7 juin 2001 et révisée le 14 août 2006. L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 strfmon ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
strfmon(3) |