_mbccpy_s
, _mbccpy_s_l
Zkopíruje jeden vícebajtový znak z řetězce do jiného řetězce. Tyto verze _mbccpy
mají _mbccpy_l
vylepšení zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Důležité
Toto rozhraní API nelze použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.
Syntaxe
errno_t _mbccpy_s(
unsigned char *dest,
size_t buffSizeInBytes,
int * pCopied,
const unsigned char *src
);
errno_t _mbccpy_s_l(
unsigned char *dest,
size_t buffSizeInBytes,
int * pCopied,
const unsigned char *src,
_locale_t locale
);
template <size_t size>
errno_t _mbccpy_s(
unsigned char (&dest)[size],
int * pCopied,
const unsigned char *src
); // C++ only
template <size_t size>
errno_t _mbccpy_s_l(
unsigned char (&dest)[size],
int * pCopied,
const unsigned char *src,
_locale_t locale
); // C++ only
Parametry
dest
Zkopírujte cíl.
buffSizeInBytes
Velikost cílové vyrovnávací paměti.
pCopied
Vyplní se počtem bajtů zkopírovaných (1 nebo 2 v případě úspěchu). Pokud vás číslo nezajímá, předejte NULL
ho.
src
Vícebajtový znak ke zkopírování.
locale
Národní prostředí, které se má použít.
Vrácená hodnota
Nula v případě úspěchu; kód chyby při selhání. Pokud src
nebo je NULL
, nebo dest
pokud by bylo zkopírováno dest
více než buffSizeinBytes
bajty , je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je povoleno pokračovat provádění, funkce vrátí EINVAL
a errno
je nastavena na EINVAL
.
Poznámky
Funkce _mbccpy_s
zkopíruje jeden vícebajtový znak z src
do dest
. Pokud src
neodkazuje na hlavní bajt vícebajtového znaku určeného implicitním voláním _ismbblead
, pak se zkopíruje jeden bajt, na který src
odkazuje. Pokud src
odkazuje na hlavní bajt, ale následující bajt je 0, a proto je neplatný, pak se 0 zkopíruje do dest
, errno
je nastaven na EILSEQ
a funkce vrátí EILSEQ
.
_mbccpy_s
nepřidá ukončovací znak null; Pokud src
však odkazuje na znak null, pak se tato hodnota null zkopíruje dest
(jako běžná jednobajtů kopie).
Hodnota je pCopied
vyplněna počtem zkopírovaných bajtů. Možné hodnoty jsou 1 a 2, pokud je operace úspěšná. Pokud NULL
se tento parametr předá, bude ignorován.
src |
zkopírováno do dest |
pCopied |
Vrácená hodnota |
---|---|---|---|
bez olovo-bajtu | bez olovo-bajtu | 0 | 0 |
0 | 0 | 1 | 0 |
bajt lead-byte následovaný ne-0 | bajt lead-byte následovaný ne-0 | 2 | 0 |
hlavní bajt následovaný 0 | 0 | 1 | EILSEQ |
Druhý řádek je jen speciální případ prvního řádku. Tabulka předpokládá buffSizeInBytes
>= pCopied
.
_mbccpy_s
používá aktuální národní prostředí pro jakékoli chování závislé na národním prostředí. _mbccpy_s_l
je shodný s tím rozdílem _mbccpy_s
, že _mbccpy_s_l
používá národní prostředí předávané pro jakékoli chování závislé na národním prostředí.
V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminuje nutnost zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tccpy_s |
Mapuje se na makro nebo vloženou funkci. | _mbccpy_s |
Mapuje se na makro nebo vloženou funkci. |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_mbccpy_s |
<mbstring.h> |
_mbccpy_s_l |
<mbstring.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Viz také
Národní prostředí
Interpretace vícebajtových sekvencí znaků
_mbclen
, , mblen
_mblen_l