Aracılığıyla paylaş


strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Bir dizenin karakterlerini ekleyin. Bu işlevlerin daha güvenli sürümleri için 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ütme uygulamalarda kullanılamaz.Daha fazla bilgi için bkz: /zw ile desteklenmeyen crt işlevlerinin.

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
    Hedef boşlukla sonlandırılmış dize.

  • strSource
    Kaynak boşlukla sonlandırılmış dize.

  • count
    Eklenecek karakter sayısı.

  • locale
    Kullanılacak yerel ayarı.

Dönüş Değeri

Hedef dize için bir işaretçi döndürür. Hiçbir değer döndürmeyen bir hatayı göstermek için ayrılmıştır.

Notlar

strncat İşlev ekler, en çok, ilk count karakter strSource için strDest. İlk karakteri strSource , sondaki boş karakter üzerine yazar strDest. Null karakteri içinde görünüyorsa, strSource önce count karakterler eklenir, strncat tüm karakterleri ekler strSource, null karakteri kadar. count Uzunluğundan daha büyük strSource, uzunluğu, strSource yerine kullanılan count. Tüm durumlarda, sonuç dizesi null karakteri ile sona erdi. Kopyalama, üst üste dizeler arasında yer alıyorsa, davranışı tanımsızdır.

Güvenlik NotuGüvenlik Notu

strncatyeterli alana denetlemez strDest; Bu nedenle olası bir nedeni Arabellek taşmaları de olur.Aklınızda count ; eklenen karakter sayısını sınırlar bir boyutu sınırı değil strDest.Aşağıdaki örneğe bakın.Daha fazla bilgi için bkz: Kaçınma arabelleğin taşmasına neden.

wcsncatve _mbsncat geniş karakter ve çok baytlı karakter sürümleri strncat. Dize bağımsız değişkenleri ve dönüş değeri wcsncat geniş karakter dizesidir; _mbsncat çok baytlı karakter dizeleridir. Bu üç işlevi aynı şekilde aksi davranır.

Çıkış değeri ayarı tarafından etkilenen LC_CTYPE ; bölgesel ayar kategorisi bkz: setlocale daha fazla bilgi için. Bu işlevler sürümlerini _l soneki kullanan geçerli yerel ayarı için bu yerel ayara bağımlı davranışı; sürümleri ile _l sonek dışında bunun yerine geçirilen yerel ayar parametresi kullandıkları aynı. Daha fazla bilgi için bkz. Yerel ayar.

Bu işlevleri C++'da, şablon aşırı yükleme vardır. Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.

Genel metin eşlemeleri yordamına girildi

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlanmamış

Tanımlanan _mbcs

Tanımlanan _UNICODE

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

Not

_strncat_lve _wcsncat_l hiçbir yerel otomatikleştirmekle varsa ve doğrudan çağrılmak üzere düşünülmemiştir.Tarafından dahili kullanım için sağlanan _tcsncat_l.

Gereksinimler

Yordamı

Gerekli başlık

strncat

<string.h>

wcsncat

<string.h> veya <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Ö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)

Dikkat edin BadAppend arabellek taşmasına neden oldu.

.NET Framework Eşdeğeri

System::string::concat

Ayrıca bkz.

Başvuru

Dize işlemleri (crt)

_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

Yorumunu çok baytlı karakter dizileri