strfmon(3)

NOMBRE
strfmon, strfmon_l - convierte valores monetarios a una cadena

BIBLIOTECA
Biblioteca Estándar C (libc, -lc)

SINOPSIS
#include <monetary.h>

ssize_t strfmon(size_t size;
                char s[restrict size], size_t size,
                const char *restrict format, ...);
ssize_t strfmon_l(size_t size;
                char s[restrict size], size_t size, locale_t l,
                const char *restrict format, ...);

DESCRIPCIÓN
The strfmon() function formats the specified monetary amount according to the current locale and format specification format and places the result in the character array s of size bytes.

The strfmon_l() function performs the same task, but uses the locale specified by l. The behavior of strfmon_l() is undefined if l is the special locale object LC_GLOBAL_LOCALE (see duplocale(3)) or is not a valid locale object handle.

Los caracteres ordinarios en format se copian a s sin conversión. Los especificadores de conversión se introducen con el carácter '%'. Justo después, puede haber cero o más de los siguientes indicadores:

=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 caracteres de conversión son

%   (En este caso la especificación completa debe ser exactamente "%%".) Pone un carácter '%' en la cadena resultante.

i   Un argumento de tipo double se convierte usando el formato monetario internacional de la localización.

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

VALOR DEVUELTO
La función strfmon() devuelve el número de caracteres colocados en el vector s, sin incluir el byte nulo de terminación, siempre que la cadena, incluido el byte nulo de terminación, quepa. De lo contrario, establece errno en E2BIG, devuelve -1 y el contenido del vector queda indefinido.

ATRIBUTOS
Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
Interfaz | Atributo | Valor
strfmon() | Seguridad del hilo | Configuración regional de multi-hilo seguro
strfmon_l() | Seguridad del hilo | Multi-hilo seguro

ESTÁNDARES
POSIX.1-2008.

HISTORIAL
POSIX.1-2001.

EJEMPLOS
La llamada

    strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
            1234.567, 1234.567);

produce la salida

    [€ **1234,57] [EUR **1 234,57]

en la configuración regional nl_NL. Las configuraciones regionales de_DE, de_CH, en_AU e en_GB producen

    [ **1234,57 €] [ **1.234,57 EUR]
    [ Fr. **1234.57] [ CHF **1'234.57]
    [ $**1234.57] [ AUD**1,234.57]
    [ £**1234.57] [ GBP**1,234.57]

VÉASE TAMBIÉN
duplocale(3), setlocale(3), sprintf(3), locale(7)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.