mbtowc, _mbtowc_l

Çok baytlı bir karakteri ilgili geniş karaktere dönüştürün.

Sözdizimi

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
);

Parametreler

wchar
Geniş bir karakterin adresi (tür wchar_t).

mbchar
Bayt dizisinin adresi (çok baytlı karakter).

count
Denetlenecek bayt sayısı.

locale
Kullanılacak yerel ayar.

Dönüş değeri

değilse mbchar NULLve geçerli bir çok baytlı karakteri işaret ederse mbchar , mbtowc çok baytlı karakterin bayt cinsinden uzunluğunu döndürür. geniş NULL karakterli null karaktere (L'\0') işaret ederse mbchar veya işaret ederse, işlev 0 döndürür. İşaret eden mbchar nesne ilk count karakterler içinde geçerli bir çok baytlı karakter oluşturmuyorsa, -1 döndürür.

Açıklamalar

İşlev, mbtowc değilse tarafından mbchar NULLişaret edilen mbcharveya daha az bayt değerini ilgili geniş karaktere dönüştürürcount. mbtowc, değilse, sonuçta elde edilen geniş karakteri wchar'da wchar NULL depolar. mbtowc bayttan MB_CUR_MAX fazlasını incelemez. mbtowc yerel ayara bağımlı davranış için geçerli yerel ayarı kullanır; _mbtowc_l , bunun yerine geçirilen yerel ayarı kullanması dışında aynıdır. Daha fazla bilgi için bkz . Yerel Ayar.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

Yordam Gerekli başlık
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar

C çalışma zamanı kitaplıklarının tüm sürümleri.

Örnek

// 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

Ayrıca bkz.

Veri dönüştürme
MultiByteToWideChar
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
_mbclen, mblen, _mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l