Provided by: manpages-es_1.55-10_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).