table of contents
STRFMON(3) | Manual del Programador de Linux | STRFMON(3) |
NOMBRE¶
strfmon - convierte valores monetarios a una cadenaSINOPSIS¶
#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.
- %
- (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 llamadastrfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]", 1234.567, 1234.567);
[ 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)5 diciembre 2000 | Linux |