wctomb
, _wctomb_l
Przekonwertuj znak szeroki na odpowiedni znak wielobajtowy. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz wctomb_s
, _wctomb_s_l
.
Składnia
int wctomb(
char *mbchar,
wchar_t wchar
);
int _wctomb_l(
char *mbchar,
wchar_t wchar,
_locale_t locale
);
Parametry
mbchar
Adres znaku wielobajtowego.
wchar
Szeroki znak.
Wartość zwracana
Jeśli wctomb
konwertuje znak szeroki na znak wielobajtowy, zwraca liczbę bajtów (która nigdy nie jest większa niż MB_CUR_MAX
) w szerokim znaku. Jeśli wchar
jest znakiem null o szerokim znaku (L'\0'), wctomb
zwraca wartość 1. Jeśli wskaźnik mbchar
docelowy to NULL
, wctomb
zwraca wartość 0. Jeśli konwersja nie jest możliwa w bieżących ustawieniach regionalnych, wctomb
zwraca wartość -1 i errno
jest ustawiona na EILSEQ
wartość .
Uwagi
Funkcja wctomb
konwertuje argument wchar
na odpowiedni znak wielobajtowy i przechowuje wynik na mbchar
. Funkcję można wywołać z dowolnego punktu w dowolnym programie. wctomb
używa bieżących ustawień regionalnych dla dowolnego zachowania zależnego od ustawień regionalnych; _wctomb_l
jest identyczna z wctomb
tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
wctomb
weryfikuje jego parametry. Jeśli mbchar
parametr ma NULL
wartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, jest ustawione na EINVAL
, errno
a funkcja zwraca wartość -1.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
wctomb |
<stdlib.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Ten program ilustruje zachowanie funkcji 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
Zobacz też
Konwersja danych
ustawienia regionalne
_mbclen
, , mblen
_mblen_l
mbstowcs
, _mbstowcs_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
WideCharToMultiByte