strncat
, , _strncat_l
wcsncat
, _wcsncat_l
, , _mbsncat
,_mbsncat_l
Menambahkan karakter string. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat strncat_s
, , wcsncat_s
_strncat_s_l
, _wcsncat_s_l
, , . _mbsncat_s_l
_mbsncat_s
Penting
_mbsncat
dan _mbsncat_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
char *strncat(
char *strDest,
const char *strSource,
size_t count
);
wchar_t *wcsncat(
wchar_t *strDest,
const wchar_t *strSource,
size_t count
);
unsigned char *_mbsncat(
unsigned char *strDest,
const unsigned char *strSource,
size_t count
);
unsigned char *_mbsncat_l(
unsigned char *strDest,
const unsigned char *strSource,
size_t count,
_locale_t locale
);
template <size_t size>
char *strncat(
char (&strDest)[size],
const char *strSource,
size_t count
); // C++ only
template <size_t size>
wchar_t *wcsncat(
wchar_t (&strDest)[size],
const wchar_t *strSource,
size_t count
); // C++ only
template <size_t size>
unsigned char *_mbsncat(
unsigned char (&strDest)[size],
const unsigned char *strSource,
size_t count
); // C++ only
template <size_t size>
unsigned char *_mbsncat_l(
unsigned char (&strDest)[size],
const unsigned char *strSource,
size_t count,
_locale_t locale
); // C++ only
Parameter
strDest
String tujuan yang dihentikan null.
strSource
String sumber yang dihentikan null.
count
Jumlah karakter yang akan ditambahkan.
locale
Lokal untuk digunakan.
Nilai hasil
Mengembalikan penunjuk ke string tujuan. Tidak ada nilai pengembalian yang dicadangkan untuk menunjukkan kesalahan.
Keterangan
Fungsi ini strncat
menambahkan, paling banyak, karakter pertama count
dari strSource
ke strDest
. Karakter awal menimpa strSource
karakter strDest
null yang mengakhiri . Jika karakter null muncul di strSource
sebelum count
karakter ditambahkan, strncat
tambahkan semua karakter dari strSource
, hingga karakter null. Jika count
lebih besar dari panjang strSource
, panjang strSource
digunakan sebagai pengganti count
. Dalam semua kasus, string yang dihasilkan dihentikan dengan karakter null. Jika penyalinan terjadi di antara string yang tumpang tindih, perilaku tidak terdefinisi.
Penting
strncat
tidak memeriksa ruang yang cukup di strDest
; oleh karena itu merupakan potensi penyebab overruns buffer. Perlu diingat bahwa membatasi jumlah karakter yang count
ditambahkan; itu bukan batas ukuran strDest
. Lihat contoh di bawah ini. Untuk informasi selengkapnya, lihat Menghindari overruns buffer.
wcsncat
dan _mbsncat
adalah versi karakter lebar dan multibyte-character dari strncat
. Argumen string dan nilai wcsncat
yang dikembalikan adalah string karakter lebar. Argumen string dan nilai _mbsncat
pengembalian adalah string multibyte-character. Ketiga fungsi ini berulah secara identik jika tidak.
Nilai output dipengaruhi oleh pengaturan LC_CTYPE
pengaturan kategori lokal. Untuk informasi selengkapnya, lihat setlocale
. Versi fungsi ini tanpa _l
akhiran menggunakan lokal saat ini untuk perilaku tergantung lokal ini. Versi dengan akhiran _l
identik kecuali mereka menggunakan parameter lokal yang diteruskan sebagai gantinya. Untuk informasi selengkapnya, lihat Lokal.
Di C++, fungsi-fungsi ini memiliki kelebihan beban templat. 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
TCHAR.H Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tcsncat |
strncat |
_mbsnbcat |
wcsncat |
_tcsncat_l |
_strncat_l |
_mbsnbcat_l |
_wcsncat_l |
Catatan
_strncat_l
dan _wcsncat_l
tidak memiliki ketergantungan lokal dan tidak dimaksudkan untuk dipanggil secara langsung. Mereka disediakan untuk penggunaan internal oleh _tcsncat_l
.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
strncat |
<string.h> |
wcsncat |
<string.h> atau <wchar.h> |
_mbsncat |
<mbstring.h> |
_mbsncat_l |
<mbstring.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_strncat.c
// Use strcat and strncat to append to a string.
#include <stdlib.h>
#define MAXSTRINGLEN 39
char string[MAXSTRINGLEN+1];
// or char *string = malloc(MAXSTRINGLEN+1);
void BadAppend( char suffix[], int n )
{
strncat( string, suffix, n );
}
void GoodAppend( char suffix[], size_t n )
{
strncat( string, suffix, __min( n, MAXSTRINGLEN-strlen(string)) );
}
int main( void )
{
string[0] = '\0';
printf( "string can hold up to %d characters\n", MAXSTRINGLEN );
strcpy( string, "This is the initial string!" );
// concatenate up to 20 characters...
BadAppend( "Extra text to add to the string...", 20 );
printf( "After BadAppend : %s (%d chars)\n", string, strlen(string) );
strcpy( string, "This is the initial string!" );
// concatenate up to 20 characters...
GoodAppend( "Extra text to add to the string...", 20 );
printf( "After GoodAppend: %s (%d chars)\n", string, strlen(string) );
}
Output
string can hold up to 39 characters
After BadAppend : This is the initial string!Extra text to add to (47 chars)
After GoodAppend: This is the initial string!Extra text t (39 chars)
Anda dapat melihat bahwa BadAppend
menyebabkan buffer diserbu.
Lihat juga
Manipulasi string
_mbsnbcat
, _mbsnbcat_l
strcat
, , wcscat
_mbscat
strcmp
, , wcscmp
_mbscmp
strcpy
, , wcscpy
_mbscpy
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
_strset
, , _strset_l
_wcsset
, _wcsset_l
, , _mbsset
,_mbsset_l
strspn
, , wcsspn
_mbsspn
,_mbsspn_l
Lokal
Interpretasi urutan karakter multibyte
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