_mbccpy_s
, _mbccpy_s_l
Kopiuje jeden znak wielobajtowy z ciągu do innego ciągu. Te wersje programu _mbccpy
_mbccpy_l
mają ulepszenia zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Ważne
Tego interfejsu API nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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
Kopiuj miejsce docelowe.
buffSizeInBytes
Rozmiar buforu docelowego.
pCopied
Wypełniony liczbą bajtów skopiowanych (1 lub 2, jeśli operacja powiedzie się). Przekaż, NULL
jeśli nie interesuje Cię liczba.
src
Znak wielobajtowy do skopiowania.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zero w przypadku powodzenia; kod błędu dotyczący błędu. Jeśli src
parametr lub dest
ma NULL
wartość , lub jeśli do metody zostanie skopiowana dest
więcej niż buffSizeinBytes
bajty, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcje zwracają EINVAL
wartość i errno
jest ustawiona na EINVAL
wartość .
Uwagi
Funkcja _mbccpy_s
kopiuje jeden znak wielobajtowy z src
do dest
. Jeśli src
nie wskazuje na bajt główny znaku wielobajtowego określonego przez niejawne wywołanie metody _ismbblead
, jest kopiowany pojedynczy bajt wskazujący src
. Jeśli src
wskazuje bajt ołowiu, ale następujący bajt wynosi 0, a tym samym nieprawidłowy, wartość 0 jest kopiowana do dest
, jest ustawiona na EILSEQ
wartość , errno
a funkcja zwraca wartość EILSEQ
.
_mbccpy_s
nie dołącza terminatora o wartości null; jeśli src
jednak wskazuje znak null, wartość null jest kopiowana do dest
(jako zwykła kopia jednobajtowa).
Wartość w pliku pCopied
jest wypełniona liczbą skopiowanych bajtów. Możliwe wartości to 1 i 2, jeśli operacja zakończy się pomyślnie. Jeśli NULL
parametr jest przekazywany, ten parametr jest ignorowany.
src |
skopiowane do dest |
pCopied |
Wartość zwracana |
---|---|---|---|
bez bajtu ołowiu | bez bajtu ołowiu | 1 | 0 |
0 | 0 | 1 | 0 |
bajt potencjalnego klienta, po którym następuje wartość innej niż 0 | bajt potencjalnego klienta, po którym następuje wartość innej niż 0 | 2 | 0 |
bajt potencjalnego klienta, po którym następuje 0 | 0 | 1 | EILSEQ |
Drugi wiersz jest tylko specjalnym przypadkiem pierwszego wiersza. W tabeli założono buffSizeInBytes
>, że = pCopied
.
_mbccpy_s
używa bieżących ustawień regionalnych dla dowolnego zachowania zależnego od ustawień regionalnych. _mbccpy_s_l
jest identyczny z _mbccpy_s
tą różnicą, że _mbccpy_s_l
używa ustawień regionalnych przekazanych dla dowolnego zachowania zależnego od ustawień regionalnych.
W języku C++używanie tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wnioskować długość buforu, eliminując konieczność określenia argumentu rozmiaru. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tccpy_s |
Mapuje na makro lub funkcję śródliniową. | _mbccpy_s |
Mapuje na makro lub funkcję śródliniową. |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_mbccpy_s |
<mbstring.h> |
_mbccpy_s_l |
<mbstring.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Zobacz też
ustawienia regionalne
Interpretacja sekwencji znaków wielobajtowych
_mbclen
, , mblen
_mblen_l