strncat, , _strncat_lwcsncat, _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 strDestnull 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_lwcsncpy, _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