WPRINTF(3) Library Functions Manual WPRINTF(3)

wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - conversão de saída formatada de caracteres largos

Standard C library (libc, -lc)

#include <stdio.h>
#include <wchar.h>
int wprintf(const wchar_t *restrict formato, ...);
int fwprintf(FILE *restrict fluxo,
             const wchar_t *restrict formato, ...);
int swprintf(wchar_t *restrict wcs, size_t maxcomp,
             const wchar_t *restrict formato, ...);
int vwprintf(const wchar_t *restrict formato, va_list args);
int vfwprintf(FILE *restrict fluxo,
             const wchar_t *restrict formato, va_list args);
int vswprintf(wchar_t *restrict wcs, size_t maxcomp,
             const wchar_t *restrict formato, va_list args);
Requisitos de macro de teste de recursos para o glibc (consulte feature_test_macros(7)):

Todas as funções mostradas acima:


_XOPEN_SOURCE >= 500 || _ISOC99_SOURCE
|| _POSIX_C_SOURCE >= 200112L

A família de funções wprintf() é a equivalente para caracteres largos à família de funções printf(3). Ela realiza a saída formatada de caracteres largos.

As funções wprintf() e vwprintf() realizam saída de caracteres largos para stdout. stdout não deve ser orientado a byte; veja fwide(3) para maiores informações.

As funções fwprintf() e vfwprintf() realizam saída de caracteres largos para fluxo. fluxo não deve ser orientado a byte; veja fwide(3) para maiores informações.

As funções swprintf() e vswprintf() realizam saída de caracteres largos para um array de caracteres largos. O programador deve garantir que há espaço suficiente para no mínimo maxlen caracteres largos em wcs.

Estas funções são como as funções printf(3), vprintf(3), fprintf(3), vfprintf(3), sprintf(3), vsprintf(3) exceto pelas seguintes diferenças:

A formato é uma string de caracteres largos.
A saída consiste de caracteres largos, não bytes.
swprintf() e vswprintf() recebem um argumento maxcomp, sprintf(3) e vsprintf(3) não recebem. (snprintf(3) e vsnprintf(3) recebem um argumento maxcomp, mas estas funções não retornam -1 quando ocorre um estouro de buffer no GNU/Linux.)

O tratamento de caracteres de conversão c e s é diferente:

Se nenhum modificador l está presente, o argumento int é convertido para um caractere largo por uma chamada a para a função btowc(3), e o caractere largo resultante é escrito. Se um modificador l está presente, o argumento wint_t (caractere largo) é escrito.
Se nenhum modificador l está presente: O argumento const char * é esperado como um ponteiro para um tipo de array de caracteres (ponteiro para uma string) contendo uma sequência de caracteres multibyte começando no estado de transição inicial. Caracteres do array são convertidos para caracteres largos (cada um por uma chamada à função mbrtowc(3) com um estado de conversão iniciando no estado inicial antes do primeiro byte). Os caracteres largos resultantes são escritos até (mas não incluindo) o caractere largo nulo de terminação (L'\0'). Se uma precisão é especificado, nenhum caractere largo a mais que o número especificado é escrito. Note que a precisão determina o número de caracteres largos escritos, não o número de bytes ou posições de tela. O array deve conter um byte nulo de terminação ('\0'), a não ser que a precisão seja dada e ela seja tão pequena que o número de caracteres largos convertidos a alcance antes que o fim do array seja alcançado. -- Se um modificador l está presente: O argumento const wchar_t * é esperado como um ponteiro para um array de caracteres largos. Caracteres largos do array são escritos até (mas não incluindo) um caractere largo nulo de terminação. Se uma precisão é especificada, nenhum caractere largo a mais do que o número especifica é escrito. O array deve conter um caractere largo nulo de terminação, a não ser que a precisão seja dada e ela seja menor ou igual ao número de caracteres largos no array.

As funções retornam o número de caracteres largos escritos, excluindo-se o caractere largo nulo de terminação no caso das funções swprintf() e vswprintf(). Elas retornam -1 quando ocorre um erro.

Para uma explicação dos termos usados nesta seção, consulte attributes(7).

Interface Atributo Valor
wprintf(), fwprintf(), swprintf(), vwprintf(), vfwprintf(), vswprintf() Thread safety MT-Safe locale

POSIX.1-2001, POSIX.1-2008, C99.

O comportamento de wprintf() etc. depende da categoria LC_CTYPE da localização atual.

Se a string formato contiver caracteres largos não-ASCII, o programa funcionará corretamente apenas se a categoria LC_CTYPE da localização atual em tempo de execução for a mesma que a categoria LC_CTYPE da localização atual em tempo de compilação. Isto é porque a representação wchar_t é dependente de plataforma e da localização. (A glibc representa caracteres largos usando seu ponto de código Unicode (ISO-10646), mas outras plataformas não o fazem. Ademais, o uso de nomes de caracteres universais C99 da forma \unnnn não resolve este problema.) Portanto, em programas internacionalizados, a string formato deve consistir apenas de caracteres largos ASCII, ou deve ser compilado em tempo de execução de forma internacionalizada (ou seja, usando gettext(3) ou iconv(3), seguido de mbstowcs(3)).

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

A tradução para português brasileiro desta página man foi criada por Felipe M Pereira <Felipe.Pereira@ic.unicamp.br>, Ricardo C.O.Freitas <english.quest@best-service.com> e Rafael Fontenelle <rafaelff@gnome.org>.

Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.

Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.

9 outubro 2022 Linux man-pages 6.01