mbtowc, _mbtowc_l

Mengonversi karakter multibyte menjadi karakter lebar yang sesuai.

Sintaks

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

Parameter

wchar
Alamat karakter lebar (jenis wchar_t).

mbchar
Alamat urutan byte (karakter multibyte).

count
Jumlah byte yang akan diperiksa.

locale
Lokal yang akan digunakan.

Nilai hasil

Jika mbchar bukan , dan jika mbchar menunjuk NULLke karakter multibyte yang valid, mbtowc mengembalikan panjang dalam byte karakter multibyte. Jika mbchar adalah NULL atau menunjuk ke karakter null karakter lebar (L'\0'), fungsi mengembalikan 0. Jika objek yang menunjuk ke tidak membentuk karakter multibyte yang mbchar valid dalam karakter pertama count , objek akan mengembalikan -1.

Keterangan

Fungsi ini mbtowc mengonversi count atau lebih sedikit byte yang ditujukkan ke , mbcharjika mbchar bukan NULL, ke karakter lebar yang sesuai. mbtowc menyimpan karakter lebar yang dihasilkan di wchar, jika wchar bukan NULL. mbtowc tidak memeriksa lebih dari MB_CUR_MAX byte. mbtowc menggunakan lokal saat ini untuk perilaku dependen lokal; _mbtowc_l identik kecuali menggunakan lokal yang diteruskan sebagai gantinya. Untuk informasi selengkapnya, lihat Lokal.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
mbtowc <stdlib.h>
_mbtowc_l <stdlib.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka

Semua versi pustaka run-time C.

Contoh

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

Baca juga

Konversi data
MultiByteToWideChar
Lokal
Interpretasi urutan karakter multibyte
_mbclen, mblen, _mblen_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l