Sdílet prostřednictvím


strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Přidejte znaky z řetězce.Bezpečnější verze tyto funkce jsou k dispozici, naleznete v tématu strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l .

Důležitá poznámkaDůležité

_mbsncata _mbsncat_l nelze použít v aplikacích, které jsou spuštěny v systému Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW.

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

Parametry

  • strDest
    Řetězec zakončený hodnotou Null cílové.

  • strSource
    Řetězec zakončený hodnotou Null zdroje.

  • count
    Počet znaků, které chcete připojit.

  • locale
    Chcete-li národní prostředí pro použití.

Vrácená hodnota

Vrací ukazatel na řetězec cílové.Žádné vrácená hodnota je vyhrazena udávající chybu.

Poznámky

strncat Funkce připojí nanejvýš první count znaky strSource na strDest.Počáteční znak strSource přepíše ukončující znak null z strDest.Pokud se zobrazí znak null v strSource před count jsou připojeny znaky, strncat připojí všechny znaky od strSource, až znakem null.Pokud count je větší než délka strSource, délka strSource je použito místo count.Všechny případy, výsledný řetězec je ukončen znakem null.Pokud kopírování probíhá mezi řetězce, které se překrývají, chování není definován.

Poznámka k zabezpečeníPoznámka k zabezpečení

strncatnehledá dostatečný prostor v strDest; Proto je možná příčina chyby přetečení vyrovnávací paměti.Pamatujte, count omezuje počet znaků, které jsou připojeny; není omezení na velikost strDest.Viz následující příklad.Další informace naleznete v tématu Zamezení způsobí přetečení vyrovnávací paměti.

wcsncata _mbsncat jsou verze širokého znaku a vícebajtové znakové sady strncat.Řetězcové argumenty a vrácené hodnoty wcsncat jsou řetězci širokého znaku; u _mbsncat jsou vícebajtové znakové řetězce.Tyto tři funkce chovat identicky jinak.

Výstupní hodnota je ovlivněna nastavením LC_CTYPE kategorie nastavení národního prostředí; Viz setlocale pro další informace.Verze těchto funkcí, aniž by _l příponu použít aktuální národní prostředí pro toto chování závislé na národním prostředí; verze s _l s tím rozdílem, že používají místo něho předán parametr locale shodná přípona.Další informace naleznete v tématu Národní prostředí.

V jazyce C++ mají tyto funkce šablony přetížení.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Mapování rutiny obecného textu

TCHAR.Byla zahájena rutina h

_UNICODE & _MBCS není definováno

_MBCS, definice

_UNICODE definována

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

[!POZNÁMKA]

_strncat_la _wcsncat_l mít závislost národního prostředí a nejsou by neměl být volán přímo.Jsou určeny pro vnitřní použití ve _tcsncat_l.

Požadavky

Byla zahájena rutina

Požadované záhlaví

strncat

<string.h>

wcsncat

<string.h> nebo <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Příklad

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

Výsledek

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)

Všimněte si, že BadAppend způsobil přetečení vyrovnávací paměti.

Ekvivalent v rozhraní .NET Framework

System::String::concat

Viz také

Referenční dokumentace

Manipulaci s řetězci (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

Národní prostředí

Výklad vícebajtové znakové sekvence