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
_mbsncat
ve _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 strSource
null karaktere ekler. uzunluğundan büyüksecount
, uzunluğu strSource
yerine count
kullanı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 strDest
yeterli 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 strDest
iç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_l
dahili 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ı