Share via


_mbccpy_s, _mbccpy_s_l

Menyalin satu karakter multibyte dari string ke string lain. Versi _mbccpy, _mbccpy_l ini memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT.

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

errno_t _mbccpy_s(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src
);
errno_t _mbccpy_s_l(
   unsigned char *dest,
   size_t buffSizeInBytes,
   int * pCopied,
   const unsigned char *src,
   _locale_t locale
);
template <size_t size>
errno_t _mbccpy_s(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src
); // C++ only
template <size_t size>
errno_t _mbccpy_s_l(
   unsigned char (&dest)[size],
   int * pCopied,
   const unsigned char *src,
   _locale_t locale
); // C++ only

Parameter

dest
Salin tujuan.

buffSizeInBytes
Ukuran buffer tujuan.

pCopied
Diisi dengan jumlah byte yang disalin (1 atau 2 jika berhasil). Teruskan NULL jika Anda tidak peduli tentang nomor tersebut.

src
Karakter multibyte untuk disalin.

locale
Lokal untuk digunakan.

Nilai hasil

Nol jika berhasil; kode kesalahan pada kegagalan. Jika src atau dest , NULLatau jika lebih dari buffSizeinBytes byte akan disalin ke dest, maka handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan EINVAL, dan errno diatur ke EINVAL.

Keterangan

Fungsi _mbccpy_s menyalin satu karakter multibyte dari src ke dest. Jika src tidak menunjuk ke byte prospek karakter multibyte seperti yang ditentukan oleh panggilan implisit ke _ismbblead, maka byte tunggal yang src menunjuk ke disalin. Jika src menunjuk ke byte prospek, tetapi byte berikut adalah 0 dan dengan demikian tidak valid, maka 0 disalin ke dest, errno diatur ke EILSEQ, dan fungsi mengembalikan EILSEQ.

_mbccpy_s tidak menambahkan terminator null; namun, jika src menunjuk ke karakter null, maka null tersebut disalin ke dest (sebagai salinan byte tunggal biasa).

Nilai di diisi dengan jumlah byte yang disalin pCopied . Nilai yang mungkin adalah 1 dan 2 jika operasi berhasil. Jika NULL diteruskan, parameter ini diabaikan.

src disalin ke dest pCopied Nilai hasil
non-lead-byte non-lead-byte 1 0
0 0 1 0
lead-byte diikuti oleh non-0 lead-byte diikuti oleh non-0 2 0
lead-byte diikuti oleh 0 0 1 EILSEQ

Baris kedua hanyalah kasus khusus dari baris pertama. Tabel mengasumsikan buffSizeInBytes>= pCopied.

_mbccpy_s menggunakan lokal saat ini untuk perilaku dependen lokal apa pun. _mbccpy_s_l identik dengan _mbccpy_s kecuali yang menggunakan lokal yang _mbccpy_s_l diteruskan untuk perilaku yang bergantung pada lokal.

Di C++, menggunakan fungsi-fungsi ini disederhanakan oleh kelebihan beban templat; kelebihan beban dapat menyimpulkan panjang buffer secara otomatis, menghilangkan kebutuhan untuk menentukan argumen ukuran. Untuk informasi selengkapnya, lihat Mengamankan kelebihan beban templat.

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
_tccpy_s Peta ke makro atau fungsi sebaris. _mbccpy_s Peta ke makro atau fungsi sebaris.

Persyaratan

Rutin Header yang diperlukan
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Lokal
Interpretasi urutan karakter multibyte
_mbclen, mblen, _mblen_l