File: strfmon.3

package info (click to toggle)
manpages-es 1.55-9
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 7,468 kB
  • ctags: 6
  • sloc: sh: 1,629; makefile: 64
file content (145 lines) | stat: -rw-r--r-- 5,495 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
.\" Copyright (c) 2000 Andries Brouwer (aeb@cwi.nl)
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
.\" USA.
.\"
.\" Traducido por Miguel Pérez Ibars <mpi79470@alu.um.es> el 13-agosto-2004
.\"
.TH STRFMON 3  "5 diciembre 2000" "Linux" "Manual del Programador de Linux"
.SH NOMBRE
strfmon \- convierte valores monetarios a una cadena
.SH SINOPSIS
.nf
.B #include <monetary.h>
.sp
.BI "ssize_t strfmon(char *" s ", size_t " max ", const char *" format ,
.B "...);"
.fi
.SH DESCRIPCIÓN
La función \fBstrfmon()\fP formatea las cantidades especificadas
según la especificación de formato \fIformat\fP y guarda el resultado
en el array de caracteres \fIs\fP de tamaño \fImax\fP.
.PP
Los caracteres ordinarios en \fIformat\fP se copian a \fIs\fP
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:
.TP
.BI = f
El carácter de un sólo byte
.I 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.
.TP
.B ^
No usar ningún carácter de agrupamiento que pueda estar definido
para la localización actual. Por defecto, el agrupamiento está habilitado.
.TP
.BR ( " 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.
.TP
.BR !
Omitir el símbolo monetario.
.TP
.BR \-
Justificar a la izquierda todos los campos. Por defecto se justifican a la derecha.
.LP
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).
.LP
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.
.LP
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
.I frac_digits
y
.I 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.)
.LP
Finalmente, la especificación de conversión debe terminar
con un carácter de conversión. Los tres carácteres de conversión son
.TP
.B %
(En este caso la especificación completa debe ser exactamente "%%".)
Pone un carácter `%' en la cadena resultado.
.TP
.B i
Un argumento de tipo doble se convierte usando el formato
monetario internacional de la localización.
.TP
.B n
Un argumento de tipo doble se convierte usando el formato
monetario nacional de la localización.
.SH "VALOR DEVUELTO"
La función \fBstrfmon()\fP devuelve el número de caracteres puestos en
el array \fIs\fP sin incluir el carácter NUL del final,
siempre que la cadena, incluendo el NUL del final, quepa.
En otro caso, asigna a
.I errno
el valor E2BIG, devuelve \-1 y el contenido del array queda indefinido.
.SH EJEMPLO
La llamada
.RS
.nf
strfmon(buf, sizeof(buf), "[%^=*#6n] [%=*#6i]",
        1234.567, 1234.567);
.fi
.RE
produce la salida
.RS
[ fl **1234,57] [ NLG  **1 234,57]
.RE
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
.RS
[ L. **1235] [ ITL  **1.235]
.br
[ $**1234.57] [ AUD **1,234.57]
.br
[Fr. **1234,57] [CHF  **1.234,57]
.br
[ **1234$57Esc] [ **1.234$57PTE ]
.RE
.SH "VÉASE TAMBIÉN"
.BR setlocale (3),
.BR sprintf (3),
.BR locale (7)