Sdílet prostřednictvím


strcat_s, wcscat_s, _mbscat_s

Přidejte řetězec.Jedná se o verze strcat, wcscat, _mbscat s vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v CRT.

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

_mbscat_snelze 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.

errno_t strcat_s(
   char *strDestination,
   size_t numberOfElements,
   const char *strSource 
);
errno_t wcscat_s(
   wchar_t *strDestination,
   size_t numberOfElements,
   const wchar_t *strSource 
);
errno_t _mbscat_s(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource 
);
template <size_t size>
errno_t strcat_s(
   char (&strDestination)[size],
   const char *strSource 
); // C++ only
template <size_t size>
errno_t wcscat_s(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource 
); // C++ only
template <size_t size>
errno_t _mbscat_s(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource 
); // C++ only

Parametry

  • strDestination
    Vyrovnávací paměť pro řetězec zakončený hodnotou Null cíl.

  • numberOfElements
    Velikost cílové vyrovnávací paměti řetězců.

  • strSource
    Vyrovnávací paměť pro řetězec zakončený hodnotou Null zdroje.

Vrácená hodnota

Nula v případě úspěchu; kód chyby při selhání.

Chybové stavy

strDestination

numberOfElements

strSource

Vrácená hodnota

ObsahstrDestination

NULLnebo neukončený

všechny

všechny

EINVAL

Nezměněno

všechny

všechny

NULL

EINVAL

strDestination[0] nastavena na 0

všechny

0 nebo příliš malá.

všechny

ERANGE

strDestination[0] nastavena na 0

Poznámky

strcat_s Funkce připojí strSource na strDestination a ukončí výsledný řetězec znakem null.Počáteční znak strSource přepíše ukončující znak null z strDestination.Chování strcat_s není definován, je-li překrytí řetězce zdrojové a cílové.

Všimněte si, že druhý parametr je celková velikost vyrovnávací paměti, nikoli na zbývající velikost:

char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End");               // Correct
strcat_s(buf, 16 – strlen(buf), " End"); // Incorrect

wcscat_sa _mbscat_s jsou verze širokého znaku a vícebajtové znakové sady strcat_s.Argumenty a vrácené hodnoty wcscat_s jsou řetězci širokého znaku; u _mbscat_s jsou vícebajtové znakové řetězce.Tyto tři funkce chovat identicky jinak.

Pokud strDestination je ukazatel s hodnotou null nebo není zakončený hodnotou null, nebo pokud strSource je NULL ukazatel, nebo je-li cílový řetězec je příliš malá, je vyvolána obslužná rutina neplatný parametr, jak je popsáno v Ověření parametrů.Pokud je povoleno zpracování, chcete-li pokračovat, tyto funkce vracejí EINVAL a errno na EINVAL.

V jazyce C++ pomocí těchto funkcí je zjednodušeno díky přetížení šablony; přetížení můžete automaticky odvodit velikost vyrovnávací paměti (není tedy třeba zadat argument velikost) a starší, nezabezpečené funkce lze automaticky nahradí s jejich protějšky novější, bezpečné.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Ladicí verze těchto funkcí vyplnit nejprve vyrovnávací paměť s 0xFD.Chcete-li zakázat toto chování, použijte _CrtSetDebugFillThreshold.

Mapování rutiny obecného textu

TCHAR.Byla zahájena rutina h

_UNICODE & _MBCS není definováno

_MBCS, definice

_UNICODE definována

_tcscat_s

strcat_s

_mbscat_s

wcscat_s

Požadavky

Byla zahájena rutina

Požadované záhlaví

strcat_s

<string.h>

wcscat_s

<string.h> nebo <wchar.h>

_mbscat_s

<mbstring.h>

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

Příklad

Viz příklad kódu v strcpy_s, wcscpy_s, _mbscpy_s.

Ekvivalent v rozhraní .NET Framework

System::String::concat

Viz také

Referenční dokumentace

Manipulaci s řetězci (CRT)

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

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

strspn, wcsspn, _mbsspn, _mbsspn_l