Sdílet prostřednictvím


wctomb, _wctomb_l

Převede široký znak na odpovídající vícebajtový znak. K dispozici jsou bezpečnější verze těchto funkcí; viz wctomb_s, _wctomb_s_l.

Syntaxe

int wctomb(
   char *mbchar,
   wchar_t wchar
);
int _wctomb_l(
   char *mbchar,
   wchar_t wchar,
   _locale_t locale
);

Parametry

mbchar
Adresa vícebajtového znaku.

wchar
Široký znak.

Vrácená hodnota

Pokud wctomb převede široký znak na vícebajtový znak, vrátí počet bajtů (který není nikdy větší než MB_CUR_MAX) v širokém znaku. Pokud wchar je znak null širokého znaku (L'\0'), wctomb vrátí hodnotu 1. Pokud je NULLcílový ukazatel mbchar , wctomb vrátí hodnotu 0. Pokud převod není v aktuálním národním prostředí možný, wctomb vrátí hodnotu -1 a errno nastaví se na EILSEQhodnotu .

Poznámky

Funkce wctomb 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. wctomb používá aktuální národní prostředí pro jakékoli chování závislé na národním prostředí; _wctomb_l je shodný s tím rozdílem wctomb , že místo toho používá národní prostředí předané. Další informace naleznete v tématu Národní prostředí.

wctomb ověří jeho parametry. Pokud mbchar je NULL, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, errno je nastaveno na EINVAL hodnotu a funkce vrátí hodnotu -1.

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 <stdlib.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Tento program znázorňuje chování funkce wctomb.

// crt_wctomb.cpp
// compile with: /W3
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   int i;
   wchar_t wc = L'a';
   char *pmb = (char *)malloc( MB_CUR_MAX );

   printf( "Convert a wide character:\n" );
   i = wctomb( pmb, wc ); // C4996
   // Note: wctomb is deprecated; consider using wctomb_s
   printf( "   Characters converted: %u\n", i );
   printf( "   Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
   Characters converted: 1
   Multibyte character: a

Viz také

Převod dat
Národní prostředí
_mbclen, mblen, _mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte