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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk