wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - conversión
con formato de la salida de caracteres anchos
Biblioteca Estándar C (
libc,
-lc)
#include <stdio.h>
#include <wchar.h>
int wprintf(const wchar_t *restrict format, ...);
int fwprintf(FILE *restrict stream,
const wchar_t *restrict format, ...);
int swprintf(wchar_t wcs[restrict .maxlen], size_t maxlen,
const wchar_t *restrict format, ...);
int vwprintf(const wchar_t *restrict format, va_list args);
int vfwprintf(FILE *restrict stream,
const wchar_t *restrict format, va_list args);
int vswprintf(wchar_t wcs[restrict .maxlen], size_t maxlen,
const wchar_t *restrict format, va_list args);
A continuación se muestran todas las funciones:
_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE
|| _POSIX_C_SOURCE >= 200112L
La familia de funciones
wprintf() es equivalente para caracteres anchos a
la familia de funciones
printf(3). Realizan la salida con formato de
caracteres anchos.
Las funciones
wprintf() y
vwprintf() realizan la salida de
caracteres anchos a
stdout.
stdout no debe estar orientada a
bytes. Vea
fwide(3) para más información.
Las funciones
fwprintf() y
vfwprintf() realizan la salida de
caracteres anchos a
stream.
stream no debe estar orientado a
bytes. Vea
fwide(3) para más información.
Las funciones
swprintf() y
vswprintf() realizan la salida de
caracteres anchos a un array de caracteres anchos. El programador debe
garantizar que hay espacio suficiente en
wcs para, al menos,
maxlen caracteres anchos.
Estas funciones son como las funciones
printf(3),
vprintf(3),
fprintf(3),
vfprintf(3),
sprintf(3) y
vsprintf(3),
salvo por las siguientes diferencias:
- •
- La cadena format es una cadena de caracteres
anchos.
- •
- La salida está formada por caracteres anchos, no por
bytes.
- •
-
swprintf() y vswprintf() toman un argumento
maxlen, sprintf(3) y vsprintf(3) no. (Las funciones
snprintf(3) y vsnprintf(3) toman un argumento maxlen,
pero en Linux no devuelven -1 ante un desbordamiento de buffer.)
El tratamiento de los caracteres de conversión
c y
s es
distinto:
- c
- Si no está presente un modificador l, el
argumento int se convierte a un carácter ancho, mediante una
llamada a la función btowc(3), y se escribe el
carácter ancho resultante. Si está presente un modificador
l, se escribe el argumento (carácter ancho)
wint_t.
- s
- If no l modifier is present: the
const char * argument is expected to be a pointer to
an array of character type (pointer to a string) containing a multibyte
character sequence beginning in the initial shift state. Characters from
the array are converted to wide characters (each by a call to the
mbrtowc(3) function with a conversion state starting in the initial
state before the first byte). The resulting wide characters are written up
to (but not including) the terminating null wide character (L'\0'). If a
precision is specified, no more wide characters than the number specified
are written. Note that the precision determines the number of wide
characters written, not the number of bytes or screen
positions. The array must contain a terminating null byte ('\0'),
unless a precision is given and it is so small that the number of
converted wide characters reaches it before the end of the array is
reached. If an l modifier is present: the
const wchar_t * argument is expected to be a pointer
to an array of wide characters. Wide characters from the array are written
up to (but not including) a terminating null wide character. If a
precision is specified, no more than the number specified are written. The
array must contain a terminating null wide character, unless a precision
is given and it is smaller than or equal to the number of wide characters
in the array.
Las funciones devuelven el número de caracteres anchos escritos,
excluyendo el carácter ancho terminador nulo en el caso de las
funciones
swprintf() y
vswprintf(). Las funciones devuelven -1
en caso de error.
Para obtener una explicación de los términos usados en esta
sección, véase
attributes(7).
Interfaz |
Atributo |
Valor |
wprintf(), fwprintf(), swprintf(),
vwprintf(), vfwprintf(), vswprintf() |
Seguridad del hilo |
Configuración regional de multi-hilo seguro |
POSIX.1-2001, POSIX.1-2008, C99.
El comportamiento de
wprintf() y compañía depende de la
categoría
LC_CTYPE de la localización actual.
Si la cadena
format contiene caracteres anchos que no son ASCII, el
programa sólo funcionará correctamente si la categoría
LC_CTYPE de la localización actual en tiempo de ejecución
es la misma que la categoría
LC_CTYPE de la localización
actual en tiempo de compilación. Esto es así porque la
representación
wchar_t es dependiente de la plataforma y de la
localización. (La glibc representa los caracteres anchos usando sus
puntos de código Unicode (ISO-10646) pero otras plataformas no hacen
esto. Tampoco el uso de nombres universales de caractares, según la
norma C99, de la forma \unnnn soluciona este problema.) Por tanto, en
programas internacionalizados, la cadena
format debería estar
formada sólo por caracteres anchos ASCII, o debería construirse
en tiempo de ejecución de una forma internacionalizada (por ejemplo,
usando
gettext(3) o
iconv(3), seguida de
mbstowcs(3)).
fprintf(3),
fputwc(3),
fwide(3),
printf(3),
snprintf(3)
La traducción al español de esta página del manual fue
creada por Juan Piernas <
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 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
[email protected]