Provided by: manpages-es_1.55-8_all bug

NOMBRE

       wprintf,   fwprintf,   swprintf,   vwprintf,   vfwprintf,  vswprintf  -
       conversión con formato de la salida de caracteres anchos

SINOPSIS

       #include <stdio.h>
       #include <wchar.h>

       int wprintf(const wchar_t *format, ...);
       int fwprintf(FILE *stream, const wchar_t *format, ...);
       int swprintf(wchar_t *wcs, size_t maxlen,
                     const wchar_t *format, ...);

       #include <stdarg.h>

       int vwprintf(const wchar_t *format, va_list args);
       int vfwprintf(FILE *stream, const wchar_t *format, va_list args);
       int vswprintf(wchar_t *wcs, size_t maxlen,
                      const wchar_t *format, va_list args);

DESCRIPCIÓN

       La familia de funciones wprintf es equivalente para caracteres anchos a
       la  familia  de  funciones  printf.  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 la función
       fwide 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 la función
       fwide 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,  vprintf, fprintf,
       vfprintf, sprintf y vsprintf, 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  y
              vsprintf  no.  (Las  funciones  snprintf  y  vsnprintf  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,  y  se  escribe  el  carácter  ancho resultante.  Si está
              presente un modificador l, se  escribe  el  argumento  (carácter
              ancho) wint_t.

       s      Si no está presente un modificador l: se espera que el argumento
              ‘‘const char *’’ sea un puntero a  un  array  de  tipo  carácter
              (puntero  a una cadena) que contenga una secuencia de caracteres
              multibyte que comience en el  estado  inicial  de  cambios.  Los
              caracteres del array se convierten a caracteres anchos (cada uno
              mediante una llama  a  la  función  mbrtowc  con  un  estado  de
              conversión  que  comienza  en el estado inicial antes del primer
              byte). Se escriben todos los caracteres anchos resultantes hasta
              encontrar  (pero sin incluir) un carácter ancho terminador nulo.
              Si se especifica una precisión, no se  escriben  más  caracteres
              anchos  del  número  especificado.  Dese cuenta que la precisión
              determina el número de caracteres anchos escritos, no el  número
              de  bytes  o  posiciones de pantalla.  El array debe contener un
              byte terminador nulo, a menos que se proporcione una precisión y
              ésta  sea  tan  pequeña  que  el  número  de  caracteres  anchos
              obtenidos la iguale antes de que se llegue al final  del  array.
              (Si  está  presente un modificador l: se espera que el argumento
              ‘‘const wchar_t *’’ sea un puntero  a  un  array  de  caracteres
              anchos.  Se escriben todos los caracteres anchos del array hasta
              encontrar (pero sin incluir) un carácter ancho terminador  nulo.
              Si  se  especifica  una presición, no se escriben más caracteres
              del número especificado. El  array  debe  contener  un  carácter
              ancho  terminador  nulo,  a menos que se de una precisión y ésta
              sea más pequeña o igual que el número de caracteres anchos en el
              array.

VALOR DEVUELTO

       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.

CONFORME A

       ISO/ANSI C, UNIX98

VÉASE TAMBIÉN

       printf(3), fprintf(3), snprintf(3), fputwc(3), fwide(3), wscanf(3)

OBSERVACIONES

       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 libc de GNU 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  ISO 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 o iconv, seguida de mbstowcs).