Aracılığıyla paylaş


strncat, _strncat_l, wcsncat, , _wcsncat_l, _mbsncat, _mbsncat_l

Dizenin karakterlerini ekler. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. strncat_s, _strncat_s_l, wcsncat_s_wcsncat_s_l, , _mbsncat_s, _mbsncat_s_l.

Önemli

_mbsncatve _mbsncat_l Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

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

Parametreler

strDest
Null olarak sonlandırılan hedef dize.

strSource
Null olarak sonlandırılan kaynak dize.

count
Eklenecek karakter sayısı.

locale
Kullanılacak yerel ayar.

Dönüş değeri

Hedef dizeye bir işaretçi döndürür. Hata belirtmek için hiçbir dönüş değeri ayrılmaz.

Açıklamalar

strncat işlevi, en çok count ilk karakterlerini strSource öğesine eklerstrDest. öğesinin strSource ilk karakteri, öğesinin sonlandırıcı null karakterinin strDestüzerine yazar. Karakterler eklenmeden önce count içinde null bir karakter görünürsestrSource, strncat içindeki tüm karakterleri strSourcenull karaktere ekler. uzunluğundan büyüksecount, uzunluğu strSource yerine countkullanılır.strSource Her durumda, sonuçta elde edilen dize null karakterle sonlandırılır. Kopyalama çakışan dizeler arasında gerçekleşirse, davranış tanımlanmamıştır.

Önemli

strncat içinde strDestyeterli alan olup olmadığını denetlemez; bu nedenle arabellek taşmalarının olası bir nedenidir. Eklenen karakter sayısını sınırladığını count unutmayın; bu, boyutu strDestiçin bir sınır değildir. Aşağıdaki örneğe bakın. Daha fazla bilgi için bkz . Arabellek taşmalarından kaçınma.

wcsncat ve _mbsncat geniş karakterli ve çok baytlı sürümleridir strncat. Dize bağımsız değişkenleri ve dönüş değeri wcsncat geniş karakterli dizelerdir. Dize bağımsız değişkenleri ve dönüş değeri _mbsncat çok baytlı karakter dizeleridir. Bu üç işlev aynı şekilde davranır.

Çıkış değeri, yerel ayarın LC_CTYPE kategori ayarının ayarından etkilenir. Daha fazla bilgi için bkz. setlocale. Bu işlevlerin son eki olmayan _l sürümleri, bu yerel ayara bağımlı davranış için geçerli yerel ayarı kullanır. Son ekine _l sahip sürümler, bunun yerine geçirilen yerel ayar parametresini kullanmaları dışında aynıdır. Daha fazla bilgi için bkz . Yerel Ayar.

C++ dilinde bu işlevlerin şablon aşırı yüklemeleri vardır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

TCHAR.H olağan _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_tcsncat strncat _mbsnbcat wcsncat
_tcsncat_l _strncat_l _mbsnbcat_l _wcsncat_l

Not

_strncat_l ve _wcsncat_l hiçbir yerel ayar bağımlılığı yoktur ve doğrudan çağrılması amaçlanmamıştır. Bunlar tarafından _tcsncat_ldahili kullanım için sağlanır.

Gereksinimler

Yordam Gerekli başlık
strncat <string.h>
wcsncat <string.h> veya <wchar.h>
_mbsncat <mbstring.h>
_mbsncat_l <mbstring.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// 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) );
}

Çıktı

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)

Bunun arabellek taşmasına neden olduğunu BadAppend görebilirsiniz.

Ayrıca bkz.

Dize işleme
_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
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması