_mbccpy_s, _mbccpy_s_l

Kopiuje jeden znak wielobajtowy z ciągu do innego ciągu. Te wersje programu _mbccpy_mbccpy_lmają 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 NULLwartość , lub jeśli do metody zostanie skopiowana destwię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ą EINVALwartość i errno jest ustawiona na EINVALwartość .

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 EILSEQwartość , 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 przypada na wpłatę z zysku na rzecz budżetu państwa 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 Zdefiniowane _UNICODE Zdefiniowane
_tccpy_s Mapy do makra lub funkcji wbudowanej. _mbccpy_s Mapy do makra lub funkcji wbudowanej.

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