mbtowc, _mbtowc_l

Przekonwertuj znak wielobajtowy na odpowiadający mu szeroki znak.

Składnia

int mbtowc(
   wchar_t *wchar,
   const char *mbchar,
   size_t count
);
int _mbtowc_l(
   wchar_t *wchar,
   const char *mbchar,
   size_t count,
   _locale_t locale
);

Parametry

wchar
Adres szerokiego znaku (typ wchar_t).

mbchar
Adres sekwencji bajtów (znak wielobajtowy).

count
Liczba bajtów do sprawdzenia.

locale
Ustawienia regionalne do użycia.

Wartość zwracana

Jeśli mbchar nie NULLma wartości , a jeśli mbchar wskazuje prawidłowy znak wielobajtowy, mbtowc zwraca długość w bajtach znaku wielobajtowego. Jeśli mbchar znak NULL ma wartość null (L'\0), funkcja zwraca wartość 0. Jeśli obiekt, który mbchar wskazuje, nie tworzy prawidłowego znaku wielobajtowego w pierwszych count znakach, zwraca wartość -1.

Uwagi

Funkcja mbtowc konwertuje count lub mniej bajtów wskazywanych przez mbchar, jeśli mbchar nie NULLma znaku , do odpowiedniego znaku szerokiego. mbtowc przechowuje wynikowy szeroki znak wchar , jeśli wchar nie NULLjest . mbtowc nie sprawdza więcej niż MB_CUR_MAX bajtów. mbtowc używa bieżących ustawień regionalnych dla zachowania zależnego od ustawień regionalnych; _mbtowc_l jest identyczna, z tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Biblioteki

Wszystkie wersje bibliotek czasu wykonywania języka C.

Przykład

// crt_mbtowc.c
// Illustrates the behavior of the mbtowc function

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    int      i;
    char    *pmbc    = (char *)malloc( sizeof( char ) );
    wchar_t  wc      = L'a';
    wchar_t *pwcnull = NULL;
    wchar_t *pwc     = (wchar_t *)malloc( sizeof( wchar_t ) );
    printf( "Convert a wide character to multibyte character:\n" );
    wctomb_s( &i, pmbc, sizeof(char), wc );
    printf( "  Characters converted: %u\n", i );
    printf( "  Multibyte character: %x\n\n", *pmbc );

    printf( "Convert multibyte character back to a wide "
            "character:\n" );
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    printf( "   Bytes converted: %u\n", i );
    printf( "   Wide character: %x\n\n", *pwc );
    printf( "Attempt to convert when target is NULL\n" );
    printf( "   returns the length of the multibyte character:\n" );
    i = mbtowc( pwcnull, pmbc, MB_CUR_MAX );
    printf( "   Length of multibyte character: %u\n\n", i );

    printf( "Attempt to convert a NULL pointer to a" );
    printf( " wide character:\n" );
    pmbc = NULL;
    i = mbtowc( pwc, pmbc, MB_CUR_MAX );
    printf( "   Bytes converted: %u\n", i );
}
Convert a wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Convert multibyte character back to a wide character:
   Bytes converted: 1
   Wide character: 61

Attempt to convert when target is NULL
   returns the length of the multibyte character:
   Length of multibyte character: 1

Attempt to convert a NULL pointer to a wide character:
   Bytes converted: 0

Zobacz też

Konwersja danych
Multibytetowidechar
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
_mbclen, mblen, _mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l