wprintf(3)

NUME
wprintf, fwprintf, swprintf, vwprintf, vfwprintf, vswprintf - conversia de ieșire formatată a caracterelor late

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#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(size_t n;
             wchar_t wcs[restrict n], size_t n,
             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(size_t n;
             wchar_t wcs[restrict n], size_t n,
             const wchar_t *restrict format, va_list args);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

Toate funcțiile prezentate mai sus:
    _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE
        || _POSIX_C_SOURCE >= 200112L

DESCRIERE
Familia de funcții wprintf() este echivalentul în caractere late al familiei de funcții printf(3). Aceasta realizează o ieșire formatată a caracterelor late.

Funcțiile wprintf() și vwprintf() efectuează ieșirea de caractere late către stdout (ieșirea standard). stdout nu trebuie să fie orientată pe octeți; a se vedea fwide(3) pentru mai multe informații.

Funcțiile fwprintf() și vfwprintf() efectuează ieșirea de caractere late către stream. stream nu trebuie să fie orientat pe octeți; a se vedea fwide(3) pentru mai multe informații.

Funcțiile swprintf() ș i vswprintf() efectuează ieșirea de caractere late către o matrice de caractere late. Programatorul trebuie să se asigure că există spațiu pentru cel puțin n caractere late la wcs.

Aceste funcții sunt similare funcțiilor printf(3), vprintf(3), fprintf(3), vfprintf(3), sprintf(3), sprintf(3), vsprintf(3), cu excepția următoarelor diferențe:

•   Șirul format este un șir de caractere late.

•   Ieșirea constă în caractere late, nu în octeți.

•   swprintf() și vswprintf() acceptă un argument n, sprintf(3) și vsprintf(3) nu; (snprintf(3) și vsnprintf(3) acceptă un argument maxlen, dar aceste funcții nu returnează -1 la depășirea memoriei tampon în Linux).

Tratamentul caracterelor de conversie c și s este diferit:

c   Dacă nu este prezent nici un modificator l, argumentul int este convertit într-un caracter lat printr-un apel la funcția btowc(3), iar caracterul lat rezultat este scris. Dacă este prezent un modificator l, se scrie argumentul wint_t (caracter lat).

s   Dacă nu este prezent nici un modificator l: se așteaptă ca argumentul const char * să fie un indicator la o matrice de tip caracter (indicator la un șir de caractere) care conține o secvență de caractere de mai mulți octeți care începe în starea inițială de deplasare. Caracterele din matrice sunt convertite în caractere late (fiecare prin apelarea funcției mbrtowc(3) cu o stare de conversie care începe în starea inițială înainte de primul octet). Caracterele late rezultate se scriu până la (dar fără a include) caracterul lat nul de sfârșit (L„\0”). În cazul în care se specifică o precizie, nu se scriu mai multe caractere late decât numărul specificat. Rețineți că precizia determină numărul de caractere late scrise, nu numărul de octeți sau poziții pe ecran. Matricea trebuie să conțină un octet de sfârșit nul („\0”), cu excepția cazului în care se indică o precizie și aceasta este atât de mică încât numărul de caractere late convertite îl atinge înainte de a se ajunge la sfârșitul matricei. În cazul în care este prezent un modificator l: se așteaptă ca argumentul const wchar_t * să fie un indicator la o matrice de caractere late. Caracterele late din matrice se scriu până la (dar fără a include) un caracter lat nul de sfârșit. În cazul în care se specifică o precizie, nu se scriu mai multe caractere decât numărul specificat. Matricea trebuie să conțină un caracter lat nul de sfârșit, cu excepția cazului în care se indică o precizie și aceasta este mai mică sau egală cu numărul de caractere late din matrice.

VALOAREA RETURNATĂ
Funcțiile returnează numărul de caractere late scrise, cu excepția caracterului lat null de încheiere în cazul funcțiilor swprintf() și vswprintf(). În caz de eroare, este returnat -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE
A se vedea write(2) și putwc(3). În plus, poate apărea următoarea eroare:

EOVERFLOW
    Valoarea care urmează să fie returnată este mai mare decât INT_MAX.

Funcțiile fwprintf() și wprintf() pot eșua în plus dacă:

ENOMEM
    Spațiul de stocare disponibil este insuficient.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
wprintf(), fwprintf(), swprintf(), vwprintf(), vfwprintf(), vswprintf() | Siguranța firelor | MT-Safe locale

STANDARDE
C11, POSIX.1-2008.

ISTORIC
POSIX.1-2001, C99.

NOTE
Comportamentul lui wprintf() și altele depinde de categoria LC_CTYPE din configurația regională curentă.

În cazul în care șirul format conține caractere late non-ASCII, programul va funcționa corect numai dacă categoria LC_CTYPE a configurației regionale curente în momentul execuției este aceeași cu categoria LC_CTYPE a configurației regionale curente în momentul compilării. Acest lucru se datorează faptului că reprezentarea wchar_t este dependentă de platformă și de configurația regională; (glibc reprezintă caracterele late folosind punctul de cod Unicode (ISO/IEC 10646) al acestora, dar alte platforme nu fac acest lucru; de asemenea, utilizarea numelor de caractere universale C99 de forma \unnnn nu rezolvă această problemă). Prin urmare, în programele internaționalizate, șirul format ar trebui să fie format numai din caractere ASCII late sau ar trebui să fie construit în timpul execuției într-un mod internaționalizat (de exemplu, folosind gettext(3) sau iconv(3), urmat de mbstowcs(3)).

CONSULTAȚI ȘI
fprintf(3), fputwc(3), fwide(3), printf(3), snprintf(3)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.