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

NOMBRE

       wprintf,   fwprintf,   swprintf,   vwprintf,   vfwprintf,  vswprintf  -
       conversion 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'ON

       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 funcion
       fwide para mas informacion.

       Las funciones fwprintf y vfwprintf realizan  la  salida  de  caracteres
       anchos a stream. stream no debe estar orientado a bytes. Vea la funcion
       fwide para mas informacion.

       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:

       +o      La cadena format es una cadena de caracteres anchos.

       +o      La salida esta formada por caracteres anchos, no por bytes.

       +o      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 conversion c y s es distinto:

       c      Si  no  esta  presente  un  modificador  l,  el argumento int se
              convierte a un caracter ancho, mediante una llamada a la funcion
              btowc,  y  se  escribe  el  caracter  ancho resultante.  Si esta
              presente un modificador l, se  escribe  el  argumento  (caracter
              ancho) wint_t.

       s      Si no esta presente un modificador l: se espera que el argumento
              ``const char *'' sea un puntero a  un  array  de  tipo  caracter
              (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  funcion  mbrtowc  con  un  estado  de
              conversion  que  comienza  en el estado inicial antes del primer
              byte). Se escriben todos los caracteres anchos resultantes hasta
              encontrar  (pero sin incluir) un caracter ancho terminador nulo.
              Si se especifica una precision, no se  escriben  mas  caracteres
              anchos  del  numero  especificado.  Dese cuenta que la precision
              determina el numero de caracteres anchos escritos, no el  numero
              de  bytes  o  posiciones de pantalla.  El array debe contener un
              byte terminador nulo, a menos que se proporcione una precision y
              esta  sea  tan  pequena  que  el  numero  de  caracteres  anchos
              obtenidos la iguale antes de que se llegue al final  del  array.
              (Si  esta  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 caracter ancho terminador  nulo.
              Si  se  especifica  una presicion, no se escriben mas caracteres
              del numero especificado. El  array  debe  contener  un  caracter
              ancho  terminador  nulo,  a menos que se de una precision y esta
              sea mas pequena o igual que el numero de caracteres anchos en el
              array.

VALOR DEVUELTO

       Las  funciones  devuelven  el  numero  de  caracteres  anchos escritos,
       excluyendo el  caracter  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'EASE TAMBI'EN

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

OBSERVACIONES

       El comportamiento  de  wprintf  y  compania  depende  de  la  categoria
       LC_CTYPE de la localizacion actual.

       Si  la  cadena  format  contiene caracteres anchos que no son ASCII, el
       programa solo funcionara correctamente si la categoria LC_CTYPE  de  la
       localizacion actual en tiempo de ejecucion es la misma que la categoria
       LC_CTYPE de la localizacion actual en tiempo de  compilacion.  Esto  es
       asi  porque la representacion wchar_t es dependiente de la plataforma y
       de la localizacion. (La libc de GNU representa  los  caracteres  anchos
       usando  sus puntos de codigo Unicode (ISO-10646) pero otras plataformas
       no hacen esto. Tampoco el uso de  nombres  universales  de  caractares,
       segun  la  norma  ISO C99, de la forma \unnnn soluciona este problema.)
       Por tanto, en programas internacionalizados, la cadena  format  deberia
       estar  formada  solo por caracteres anchos ASCII, o deberia construirse
       en tiempo de ejecucion de una forma  internacionalizada  (por  ejemplo,
       usando gettext o iconv, seguida de mbstowcs).