wctomb_s
, _wctomb_s_l
Převede široký znak na odpovídající vícebajtový znak. Verze wctomb
, _wctomb_l
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Syntaxe
errno_t wctomb_s(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar
);
errno_t _wctomb_s_l(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar,
_locale_t locale
);
Parametry
pRetValue
Počet bajtů nebo kód označující výsledek.
mbchar
Adresa vícebajtového znaku.
sizeInBytes
Velikost vyrovnávací paměti mbchar
.
wchar
Široký znak, který chcete převést.
locale
Národní prostředí, které se má použít
Vrácená hodnota
Nula v případě úspěchu, kód chyby při selhání.
Chybové podmínky
mbchar |
sizeInBytes |
Vrácená hodnota | pRetValue |
---|---|---|---|
NULL |
>0 | EINVAL |
neupraveno |
jakékoliv | >INT_MAX |
EINVAL |
neupraveno |
jakékoliv | příliš malý | EINVAL |
neupraveno |
Pokud dojde k některé z výše uvedených chybových podmínek, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat provádění, wctomb
vrátí EINVAL
a nastaví errno
hodnotu EINVAL
.
Vrácená hodnota EILSEQ
označuje, že hodnota předaná parametrem wchar
není platným širokým znakem.
Poznámky
Funkce wctomb_s
převede svůj wchar
argument na odpovídající vícebajtový znak a uloží výsledek na mbchar
. Funkci můžete volat z libovolného bodu v libovolném programu.
Pokud wctomb_s
převede široký znak na vícebajtový znak, umístí počet bajtů (který není nikdy větší než MB_CUR_MAX
) do celého znaku na celé číslo, na které pRetValue
odkazuje . Pokud wchar
je znak null širokého znaku (L'\0'), wctomb_s
vyplní pRetValue
1. Pokud je NULL
cílový ukazatel mbchar
, wctomb_s
umístí hodnotu 0 do pRetValue
. Pokud převod není v aktuálním národním prostředí možný, wctomb_s
vloží -1 do pRetValue
.
wctomb_s
používá aktuální národní prostředí pro informace závislé na národním prostředí; _wctomb_s_l
je shodný s tím rozdílem, že místo toho používá národní prostředí předané. Další informace naleznete v tématu Národní prostředí.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
wctomb_s |
<stdlib.h> |
_wctomb_s_l |
<stdlib.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
Tento program znázorňuje chování wctomb_s
funkce.
// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i;
wchar_t wc = L'a';
char *pmb = (char *)malloc( MB_CUR_MAX );
printf_s( "Convert a wide character:\n" );
wctomb_s( &i, pmb, MB_CUR_MAX, wc );
printf_s( " Characters converted: %u\n", i );
printf_s( " Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
Characters converted: 1
Multibyte character: a
Viz také
Konverze dat
Národní prostředí
_mbclen
, , mblen
_mblen_l
mbstowcs
, _mbstowcs_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
WideCharToMultiByte