Provided by: manpages-es_1.55-10_all bug

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 `%'. Inmediatamente 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 encerradas 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 justifican 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
       representació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  determina  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  monetario  internacional de la
              localización.

       n      Un argumento de tipo doble se convierte usando el formato monetario nacional de la localización.

VALOR DEVUELTO

       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 Netherlands  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 precedido 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
       localizació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 ]

VÉASE TAMBIÉN

       setlocale(3), sprintf(3), locale(7)

Linux                                           5 diciembre 2000                                      STRFMON(3)