strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l
Bir 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 |
---|
_mbsncat ve _mbsncat_l Windows Çalışma Zamanı'nda yürütülen uygulamalarda kullanılamazlar.Daha fazla bilgi için bkz /ZW ile desteklenmeyen CRT işlevleri. |
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 ile sonlandırılmış hedef dize.strSource
Null ile sonlandırılmış kaynak dizesi.count
Sona eklenecek karakter sayısı.locale
Kullanılacak yerel ayar.
Dönüş Değeri
Hedef dizeye bir işaretçi döndürür.Bir hata gösterecek bir dönüş değeri ayrılmamış.
Notlar
strncat işlevi ekleniyor, en çok, strSource'un ilk count karakteri strDest'a.strSource'ın ilk karakteri strDest'ın son karakterinin üzerine yazar.count karakterler eklenmeden önce strSource içinde bir boş karakter görünürse, strncatstrSource öğesindeki tüm karakterleri boş karaktere kadar ekler.count uzunluğu strSource uzunluğundan büyükse, count yerine strSource uzunluğu kullanılır.Her durumda ortaya çıkan dize bir null karakterle sonlandırılır.Çakışan dizeler arasında kopyalama yer alırsa davranış tanımsızdır.
Güvenlik Notu |
---|
strncat, strDest içinde yeterli yer olup olmadığını denetlemez; bu yüzden arabellek taşmalarına neden olabilir.count eklenen karakter sayısını sınırladığını unutmayın; bunun yanı sıra strDest boyutunu da sınırlar.Aşağıdaki örneğe bakın.Daha fazla bilgi için, bkz. Arabellek Taşmalarını Önleme. |
wcsncat ve _mbsncatstrncat öğesinin geniş karakter ve çok baytlı karakter sürümleridir.Dize bağımsız değişkenleri ve wcsncat dönüş değeri geniş karakterli dizelerdir; _mbsncat dizeleri çok baytlı karakter dizeleridir.Bu üç işlev, aynı şekilde davranır.
Çıkış değeri, yerel ayarın LC_CTYPE kategori ayarından etkilenir; daha fazla bilgi için, bkz. setlocale.Bu işlevlerin, _l sonekine sahip olmayan sürümleri, yerel ayara bağlı davranışı için, geçerli yerel ayarı kullanır; _l sonekine sahip sürümler, bunun yerine iletilmiş yerel ayar parametresini kullanması hariç aynıdır.Daha fazla bilgi için bkz. Yerel Ayar.
C++ programında, bu işlevlerde şablon aşırı yüklemesi vardır.Daha fazla bilgi için bkz. Güvenli Şablon Aşırı Yüklemeleri.
Genel Metin Yordam Eşleşmeleri
TCHAR.H yordamı |
_UNICODE & _MBCS tanımlanmamış |
_MBCS tanımlanmış |
_UNICODE tanımlanmış |
---|---|---|---|
_tcsncat |
strncat |
_mbsnbcat |
wcsncat |
_tcsncat_l |
_strncat_l |
_mbsnbcat_l |
_wcsncat_l |
[!NOT]
_strncat_l ve _wcsncat_l öğelerinin yerel bağımlılığı yoktur ve doğrudan çağrılmak için değildirler.İç kullanım için _tcsncat_l tarafından sağlanırlar.
Gereksinimler
Yordam |
Gerekli başlık |
---|---|
strncat |
<string.h> |
wcsncat |
<string.h> or <wchar.h> |
_mbsncat |
<mbstring.h> |
_mbsncat_l |
<mbstring.h> |
Ek uyumluluk bilgileri 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)
BadAppend öğesinin arabellek taşmasına neden olduğunu unutmayın.
.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