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 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
Ayrıca bkz.
Başvuru
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