Bagikan melalui


wctomb_s, _wctomb_s_l

Mengonversi karakter lebar ke karakter multibyte yang sesuai. Versi wctomb, _wctomb_l dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

errno_t wctomb_s(
   int *pRetValue,
   char *mbchar,
   size_t sizeInBytes,
   wchar_t wchar
);
errno_t _wctomb_s_l(
   int *pRetValue,
   char *mbchar,
   size_t sizeInBytes,
   wchar_t wchar,
   _locale_t locale
);

Parameter

pRetValue
Jumlah byte, atau kode yang menunjukkan hasilnya.

mbchar
Alamat karakter multibyte.

sizeInBytes
Ukuran buffer mbchar.

wchar
Karakter lebar yang akan dikonversi.

locale
Lokal yang akan digunakan.

Nilai hasil

Nol jika berhasil, kode kesalahan pada kegagalan.

Kondisi Kesalahan

mbchar sizeInBytes Nilai hasil pRetValue
NULL >0 EINVAL tidak dimodifikasi
any >INT_MAX EINVAL tidak dimodifikasi
any terlalu kecil EINVAL tidak dimodifikasi

Jika salah satu kondisi kesalahan di atas terjadi, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, wctomb mengembalikan EINVAL dan mengatur errno ke EINVAL.

Nilai EILSEQ yang dikembalikan menunjukkan bahwa nilai yang diteruskan melalui parameter wchar bukan karakter lebar yang valid.

Keterangan

Fungsi mengonversi wctomb_s argumennya wchar ke karakter multibyte yang sesuai dan menyimpan hasilnya di mbchar. Anda dapat memanggil fungsi dari titik mana pun dalam program apa pun.

Jika wctomb_s mengonversi karakter lebar menjadi karakter multibyte, itu menempatkan jumlah byte (yang tidak pernah lebih besar dari MB_CUR_MAX) dalam karakter lebar ke dalam bilangan bulat yang diarahkan oleh pRetValue. Jika wchar adalah karakter null karakter lebar (L'\0'), wctomb_s diisi pRetValue dengan 1. Jika penunjuk mbchar target adalah NULL, wctomb_s masukkan 0 ke dalam pRetValue. Jika konversi tidak dimungkinkan di lokal saat ini, wctomb_s masukkan -1 di pRetValue.

wctomb_s menggunakan lokal saat ini untuk informasi yang bergantung pada lokal; _wctomb_s_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
wctomb_s <stdlib.h>
_wctomb_s_l <stdlib.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Program ini menggambarkan perilaku wctomb_s fungsi.

// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>

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

    printf_s( "Convert a wide character:\n" );
    wctomb_s( &i, pmb, MB_CUR_MAX, wc );
    printf_s( "   Characters converted: %u\n", i );
    printf_s( "   Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
   Characters converted: 1
   Multibyte character: a

Baca juga

Konversi data
Lokal
_mbclen, mblen, _mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte