strcpy_s, wcscpy_s, _mbscpy_s
Zkopírujte řetězec.Jedná se o verze strcpy, wcscpy, _mbscpy s vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v CRT.
Důležité |
---|
_mbscpy_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 strcpy_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
errno_t wcscpy_s(
wchar_t *strDestination,
size_t numberOfElements,
const wchar_t *strSource
);
errno_t _mbscpy_s(
unsigned char *strDestination,
size_t numberOfElements,
const unsigned char *strSource
);
template <size_t size>
errno_t strcpy_s(
char (&strDestination)[size],
const char *strSource
); // C++ only
template <size_t size>
errno_t wcscpy_s(
wchar_t (&strDestination)[size],
const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscpy_s(
unsigned char (&strDestination)[size],
const unsigned char *strSource
); // C++ only
Parametry
strDestination
Umístění cílové vyrovnávací paměti řetězců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; jinak k chybě.
Chybové stavy
strDestination |
numberOfElements |
strSource |
Vrácená hodnota |
ObsahstrDestination |
---|---|---|---|---|
NULL |
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
strcpy_s Funkce zkopíruje obsah do pole Adresa strSource, včetně ukončující znak null k umístění zadanému položkou strDestination.Cílový řetězec musí být dostatečně velký zdrojový řetězec, včetně ukončující znak null.Chování strcpy_s není definován, je-li překrytí řetězce zdrojové a cílové.
wcscpy_sa _mbscpy_s jsou verze širokého znaku a vícebajtové znakové sady strcpy_s uvedeném pořadí.Argumenty a vrácené hodnoty wcscpy_s jsou řetězci širokého znaku; u _mbscpy_s jsou vícebajtové znakové řetězce.Tyto tři funkce chovat identicky jinak.
Pokud strDestination nebo strSource je ukazatel s hodnotou null 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.
Po úspěšném provedení cílový řetězec bude vždy null ukončena.
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í nejprve naplní vyrovnávací paměť s Bugcheck 0xFE.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 |
---|---|---|---|
_tcscpy_s |
strcpy_s |
_mbscpy_s |
wcscpy_s |
Požadavky
Byla zahájena rutina |
Požadované záhlaví |
---|---|
strcpy_s |
<string.h> |
wcscpy_s |
<string.h> nebo <wchar.h> |
_mbscpy_s |
<mbstring.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Příklad
// crt_strcpy_s.cpp
// This program uses strcpy_s and strcat_s
// to build a phrase.
//
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main( void )
{
char string[80];
// using template versions of strcpy_s and strcat_s:
strcpy_s( string, "Hello world from " );
strcat_s( string, "strcpy_s " );
strcat_s( string, "and " );
// of course we can supply the size explicitly if we want to:
strcat_s( string, _countof(string), "strcat_s!" );
printf( "String = %s\n", string );
}
Ekvivalent v rozhraní .NET Framework
Viz také
Referenční dokumentace
strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l