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'ON

       La  funcion  strfmon()  formatea  las cantidades especificadas segun la
       especificacion de formato format y guarda el resultado en el  array  de
       caracteres s de tamano max.

       Los  caracteres  ordinarios en format se copian a s sin conversion. Los
       especificadores  de  conversion  comienzan   con   un   caracter   `%'.
       Inmediatamente  despues  puede  haber  cero  o  mas  de  las siguientes
       opciones:

       =f     El caracter de un solo byte f se usa como  caracter  de  relleno
              numerico  (el relleno se produce a la izquierda, vea mas abajo).
              Cuando no se especifica, se utiliza el caracter espacio.

       ^      No usar ningun caracter de agrupamiento que pueda estar definido
              para  la  localizacion actual. Por defecto, el agrupamiento esta
              habilitado.

       ( o +  La opcion (  indica  que  las  cantidades  negativas  deben  ser
              encerradas  entre  parentesis. La opcion + indica que los signos
              deben ser manejados  en  el  modo  por  defecto,  esto  es,  las
              cantidades  son  precedidas  por  la  indicacion  de signo de la
              localizacion, p.e., nada para positivo, "-" para negativo.

       !      Omitir el simbolo monetario.

       -      Justificar a la izquierda  todos  los  campos.  Por  defecto  se
              justifican a la derecha.

       A continuacion, puede haber una anchura de campo: una cadena de digitos
       decimales especificando una anchura  minima  de  campo.  El  valor  por
       defecto  es  0.  Un resultado mas pequeno que esta anchura es rellenado
       con espacios (a la izquierda, a menos que se especifique la  opcion  de
       justificado a la izquierda).

       Seguidamente,  pueda  haber  una  precision  izquierda  de la forma "#"
       seguido por una cadena de digitos decimales. Si el numero de digitos  a
       la  izquierda  del  caracter  decimal  es  mas  pequeno  que  esto,  la
       representacion se rellena a la izquierda con  el  caracter  de  relleno
       numerico. Los caracteres de agrupamiento no se tienen en cuenta en este
       ancho de campo.

       Tras esto, puede haber una precision derecha de la  forma  "."  seguido
       por  una  cadena  de  digitos  decimales.  La  cantidad  a formatear se
       redondea al numero especificado de  digitos  antes  de  formatear.   El
       valor  por  omision  se  especifica  en  los  elementos  frac_digits  y
       int_frac_digits de la localizacion actual.  Si la precision derecha  es
       0,  no  se  muestra  ningun  caracter  decimal  (el caracter decimal lo
       determina  aqui  LC_MONETARY  y  puede  diferir  del  especificado  por
       LC_NUMERIC.)

       Finalmente,  la  especificacion  de  conversion  debe  terminar  con un
       caracter de conversion. Los tres caracteres de conversion son

       %      (En este caso la especificacion completa  debe  ser  exactamente
              "%%".)  Pone un caracter `%' en la cadena resultado.

       i      Un  argumento  de  tipo  doble  se  convierte  usando el formato
              monetario internacional de la localizacion.

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

VALOR DEVUELTO

       La  funcion  strfmon()  devuelve  el numero de caracteres puestos en el
       array s sin incluir el caracter 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  localizacion  alemana  (con  fl  para  "florijnen"  y  NLG  para
       Netherlands  Guilders).   El  caracter  de  grupo es muy molesto porque
       ocupa mucho espacio como digito, mientras que no deberia ocupar mas  de
       la  mitad  y  provocara sin duda confusion.  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
       localizacion.  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'EASE TAMBI'EN

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