Provided by:
manpages-es_1.55-4_all 
NOMBRE
strfmon - convierte valores monetarios a una cadena
SINOPSIS
#include <monetary.h>
ssize_t strfmon(char *s, size_t max, const char *format,
...);
DESCRIPCI N
La función strfmon() formatea las cantidades especificadas según la
especificación de formato format y guarda el resultado en el array de
caracteres s de tamaño max.
Los caracteres ordinarios en format se copian a s sin conversión. Los
especificadores de conversión comienzan con un carácter ‘%’. Inmediata‐
mente después puede haber cero o más de las siguientes opciones:
=f El carácter de un sólo byte f se usa como carácter de relleno
numérico (el relleno se produce a la izquierda, vea más abajo).
Cuando no se especifica, se utiliza el carácter espacio.
^ No usar ningún carácter de agrupamiento que pueda estar definido
para la localización actual. Por defecto, el agrupamiento está
habilitado.
( o + La opción ( indica que las cantidades negativas deben ser encer‐
radas entre paréntesis. La opción + indica que los signos deben
ser manejados en el modo por defecto, esto es, las cantidades
son precedidas por la indicación de signo de la localización,
p.e., nada para positivo, "-" para negativo.
! Omitir el símbolo monetario.
- Justificar a la izquierda todos los campos. Por defecto se jus‐
tifican a la derecha.
A continuación, puede haber una anchura de campo: una cadena de dígitos
decimales especificando una anchura mínima de campo. El valor por
defecto es 0. Un resultado más pequeño que esta anchura es rellenado
con espacios (a la izquierda, a menos que se especifique la opción de
justificado a la izquierda).
Seguidamente, pueda haber una precisión izquierda de la forma "#"
seguido por una cadena de dígitos decimales. Si el número de dígitos a
la izquierda del carácter decimal es más pequeño que esto, la repre‐
sentación se rellena a la izquierda con el carácter de relleno
numérico. Los caracteres de agrupamiento no se tienen en cuenta en este
ancho de campo.
Tras esto, puede haber una precisión derecha de la forma "." seguido
por una cadena de dígitos decimales. La cantidad a formatear se
redondea al número especificado de dígitos antes de formatear. El
valor por omisión se especifica en los elementos frac_digits y
int_frac_digits de la localización actual. Si la precisión derecha es
0, no se muestra ningún carácter decimal (el carácter decimal lo deter‐
mina aquí LC_MONETARY y puede diferir del especificado por LC_NUMERIC.)
Finalmente, la especificación de conversión debe terminar con un
carácter de conversión. Los tres carácteres de conversión son
% (En este caso la especificación completa debe ser exactamente
"%%".) Pone un carácter ‘%’ en la cadena resultado.
i Un argumento de tipo doble se convierte usando el formato mone‐
tario internacional de la localización.
n Un argumento de tipo doble se convierte usando el formato mone‐
tario nacional de la localización.
La función strfmon() devuelve el número de caracteres puestos en el
array s sin incluir el carácter NUL del final, siempre que la cadena,
incluendo el NUL del final, quepa. En otro caso, asigna a errno el
valor E2BIG, devuelve -1 y el contenido del array queda indefinido.
EJEMPLO
La llamada
strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
1234.567, 1234.567);
produce la salida
[ fl **1234,57] [ NLG **1 234,57]
en la localización alemana (con fl para "florijnen" y NLG para Nether‐
lands Guilders). El carácter de grupo es muy molesto porque ocupa
mucho espacio como dígito, mientras que no debería ocupar más de la
mitad y provocará sin duda confusión. Sorprendentemente, "fl" es pre‐
cedido y seguido por un espacio, y "NLG" es precedido por uno y seguido
por dos espacios. Esto puede ser un fallo en los ficheros de local‐
ización. Las localizaciones italiana, australiana, suiza y portuguesa
producen los resultados
[ L. **1235] [ ITL **1.235]
[ $**1234.57] [ AUD **1,234.57]
[Fr. **1234,57] [CHF **1.234,57]
[ **1234$57Esc] [ **1.234$57PTE ]
setlocale(3), sprintf(3), locale(7)