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
NULL
ve 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
NULL
işaret edilen mbchar
veya 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