_mbclen, mblen, _mblen_l, _mbclen_l

Mendapatkan panjang dan menentukan validitas karakter multibyte.

Penting

API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.

Sintaks

size_t _mbclen(
   const unsigned char *c
);
size_t _mbclen_l(
   unsigned char const* c,
   _locale_t locale
);
int mblen(
   const char *mbstr,
   size_t count
);
int _mblen_l(
   const char *mbstr,
   size_t count,
   _locale_t locale
);

Parameter

c
Karakter multibyte.

mbstr
Alamat urutan byte multibyte-character.

count
Jumlah byte yang akan diperiksa.

locale
Lokal untuk digunakan.

Nilai hasil

_mbclen dan _mbclen_l mengembalikan 1 atau 2, sesuai dengan panjang karakter cmultibyte . Fungsi selalu mengembalikan 1 untuk UTF-8, baik c multibyte atau tidak. Tidak ada pengembalian kesalahan untuk _mbclen.

Jika mbstr bukan NULL, mblen dan _mblen_l mengembalikan panjang, dalam byte, dari karakter multibyte. Fungsi mblen dan _mblen_l berfungsi dengan benar pada UTF-8, dan dapat mengembalikan nilai antara 1 dan 3. Kapan mbstr ( NULL atau menunjuk ke karakter null karakter lebar), mblen dan _mblen_l mengembalikan 0. Objek yang mbstr menunjuk ke harus membentuk karakter multibyte yang valid dalam karakter pertama count , atau mblen dan _mblen_l mengembalikan -1.

Keterangan

Fungsi _mbclen mengembalikan panjang, dalam byte, dari karakter cmultibyte . Jika c tidak menunjuk ke byte prospek karakter multibyte (sebagaimana ditentukan oleh panggilan implisit ke _ismbblead, hasilnya _mbclen tidak dapat diprediksi.

mblen mengembalikan panjang dalam byte mbstr jika merupakan karakter multibyte yang valid. Ini juga menentukan validitas karakter multibyte yang terkait dengan halaman kode. mblen memeriksa count atau lebih sedikit byte yang terkandung dalam mbstr, tetapi tidak lebih dari MB_CUR_MAX byte.

Nilai output dipengaruhi oleh LC_CTYPE pengaturan kategori lokal. Versi fungsi ini tanpa _l akhiran menggunakan lokal saat ini untuk perilaku tergantung lokal ini. Versi _l akhiran berperilaku sama, tetapi mereka menggunakan parameter lokal yang diteruskan sebagai gantinya. Untuk informasi selengkapnya, lihat setlocale dan Lokal.

_mbclen, _mblen_l, dan _mbclen_l khusus Microsoft, bukan bagian dari pustaka Standard C. Kami tidak menyarankan Anda menggunakannya di mana Anda menginginkan kode portabel. Untuk kompatibilitas Standard C, gunakan mblen atau mbrlen sebagai gantinya.

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

Pemetaan rutin teks generik

Rutinitas Tchar.h _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tclen Peta ke makro atau fungsi sebaris _mbclen Peta ke makro atau fungsi sebaris

Persyaratan

Rutin Header yang diperlukan
_mbclen <mbstring.h>
mblen <stdlib.h>
_mblen_l <stdlib.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_mblen.c
/* illustrates the behavior of the mblen function
*/

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

int main( void )
{
    int      i;
    char    *pmbc = (char *)malloc( sizeof( char ) );
    wchar_t  wc   = L'a';

    printf( "Convert 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 );

    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of multibyte character %x: %u\n", *pmbc, i );

    pmbc = NULL;
    i = mblen( pmbc, MB_CUR_MAX );
    printf( "Length in bytes of NULL multibyte character %x: %u\n", pmbc, i );
}
Convert wide character to multibyte character:
   Characters converted: 1
   Multibyte character: 61

Length in bytes of multibyte character 61: 1
Length in bytes of NULL multibyte character 0: 0

Baca juga

Klasifikasi karakter
Lokal
Interpretasi urutan karakter multibyte
_mbccpy, _mbccpy_l
mbrlen
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l