Share via


strcat_s, wcscat_s, _mbscat_s, _mbscat_s_l

Menambahkan string. Versi strcat, , _mbscatwcscatini memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT.

Penting

_mbscat_s dan _mbscat_s_l 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 strcat_s(
   char *strDestination,
   size_t numberOfElements,
   const char *strSource
);
errno_t wcscat_s(
   wchar_t *strDestination,
   size_t numberOfElements,
   const wchar_t *strSource
);
errno_t _mbscat_s(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource
);
errno_t _mbscat_s_l(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource,
   _locale_t locale
);
template <size_t size>
errno_t strcat_s(
   char (&strDestination)[size],
   const char *strSource
); // C++ only
template <size_t size>
errno_t wcscat_s(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s_l(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource,
   _locale_t locale
); // C++ only

Parameter

strDestination
Buffer string tujuan yang dihentikan null.

numberOfElements
Ukuran buffer string tujuan.

strSource
Buffer string sumber yang dihentikan null.

locale
Lokal untuk digunakan.

Nilai hasil

Nol jika berhasil; kode kesalahan pada kegagalan.

Kondisi kesalahan

strDestination numberOfElements strSource Nilai hasil Isi dari strDestination
NULL atau tidak ditentukan any any EINVAL tidak dimodifikasi
any any NULL EINVAL strDestination[0] atur ke 0
any 0, atau terlalu kecil any ERANGE strDestination[0] atur ke 0

Keterangan

Fungsi menambahkan strcat_sstrSource dan strDestination mengakhiri string yang dihasilkan dengan karakter null. Karakter awal menimpa strSource karakter strDestinationnull yang mengakhiri . Perilaku strcat_s tidak terdefinisi jika string sumber dan tujuan tumpang tindih.

Parameter kedua adalah ukuran total buffer, bukan ukuran yang tersisa:

char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End");               // Correct
strcat_s(buf, 16 - strlen(buf), " End"); // Incorrect

wcscat_s dan _mbscat_s adalah versi karakter lebar dan multibyte-character dari strcat_s. Argumen dan nilai yang dikembalikan adalah wcscat_s string karakter lebar. Argumen dan nilai yang dikembalikan adalah _mbscat_s string multibyte-character. Ketiga fungsi ini berulah secara identik jika tidak.

Jika strDestination adalah penunjuk null, atau tidak dihentikan null, atau jika strSource adalah NULL penunjuk, atau jika string tujuan terlalu kecil, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini kembali EINVAL dan diatur errno ke EINVAL.

Versi fungsi yang memiliki _l akhiran memiliki perilaku yang sama, tetapi gunakan parameter lokal yang diteruskan alih-alih lokal saat ini. Untuk informasi selengkapnya, lihat 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) dan mereka dapat secara otomatis mengganti fungsi lama yang tidak aman dengan rekan-rekan yang lebih baru dan aman. Untuk informasi selengkapnya, lihat Mengamankan kelebihan beban templat.

Versi pustaka debug dari fungsi-fungsi ini terlebih dahulu mengisi buffer dengan 0xFE. Untuk menonaktifkan perilaku ini, gunakan _CrtSetDebugFillThreshold.

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

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tcscat_s strcat_s _mbscat_s wcscat_s

Persyaratan

Rutin Header yang diperlukan
strcat_s <string.h>
wcscat_s <string.h> atau <wchar.h>
_mbscat_s <mbstring.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Lihat contoh kode di strcpy_s, wcscpy_s, _mbscpy_s.

Baca juga

Manipulasi string
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn, wcsspn, _mbsspn, _mbsspn_l