Udostępnij za pośrednictwem


_mbccpy_s, _mbccpy_s_l

Kopiuje jeden znak wielobajtowy z ciągu do innego ciągu.Te wersje _mbccpy, _mbccpy_l mają wzmocnienia zabezpieczeń, jak opisano w Funkcje zabezpieczeń w CRT.

Ważna uwagaWażne

Tego API nie można używać w aplikacjach korzystających ze środowiska wykonawczego Windows.Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane przez /ZW.

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

  • [poza] dest
    Miejsce docelowe kopii.

  • [w] buffSizeInBytes
    Rozmiar buforu miejsca docelowego.

  • [poza] pCopied
    Wypełniony liczbą bajtów skopiowanych (1 lub 2, jeśli zakończone sukcesem).Przekazać NULL jeśli nie dba o numerze.

  • [w] src
    Znak wielobajtowy, który ma zostać skopiowany.

  • [w] locale
    Ustawienia regionalne do użycia.

Wartość zwracana

Zero, jeśli operacja się powiedzie; w przeciwnym razie, kod błędu.Jeśli src lub dest wynosi NULL lub, jeśli więcej niż buffSizeinBytes bajtów zostałoby skopiowanych do dest, wówczas procedura obsługi nieprawidłowego parametru jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, funkcje zwracają EINVAL, a errno jest ustawione jako EINVAL.

Uwagi

Funkcja _mbccpy_s kopiuje jeden znak wielobajtowy z src do dest.Jeśli src nie wskazuje bajtu wiodącego znaku wielobajtowego jak ustalono przez wywołanie niejawne _ismbblead, wówczas bajt pojedynczy, na który wskazuje src jest kopiowany.Jeśli src wskazuje na bajt wiodący, ale następny bajt jest 0, a więc jest nieważny, wówczas 0 jest kopiowane do dest, errno ustawiono na EILSEQ, a funkcja zwraca EILSEQ.

_mbccpy_s nie dołącza terminatora null; jednakże, jeśli src wskazuje znak null, wówczas ten znak null jest kopiowany do dest (jest to po prostu regularna kopia jednobajtowa).

Wartość w pCopied jest wypełniona liczbą bajtów skopiowanych.Możliwe wartości to 1 i 2, jeśli operacja powiedzie się.Jeśli NULL został przekazany, ten parametr jest ignorowany.

src

skopiowano do dest

pCopied

Wartość zwrócona

bajt-nie-wiodący

bajt-nie-wiodący

1

0

0

0

1

0

bajt wiodący, następnie wartość niezerowa

bajt wiodący, następnie wartość niezerowa

2

0

bajt wiodący, następnie 0

0

1

EILSEQ

Należy zauważyć, że drugi wiersz jest szczególnym przypadkiem pierwszego.Należy również zauważyć, że tabela zakłada buffSizeInBytes >= pCopied.

_mbccpy_s używa bieżących ustawień regionalnych dla wszelkich zachowań zależnych od ustawień regionalnych._mbccpy_s_l jest identyczny z _mbccpy_s, z tą różnicą, że _mbccpy_s_l używa ustawień regionalnych dla wszelkich zachowań zależnych od ustawień regionalnych.

W języku C++, korzystanie z tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wydedukować długość buforu, eliminując konieczność określenia argumentu rozmiaru.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.

Rutynowe mapowania zwykłego tekstu

Procedura Tchar.h

_UNICODE i _MBCS nie zdefiniowany

_MBCS zdefiniowano

_UNICODE zdefiniowany

_tccpy_s

Mapy i makro lub funkcja śródwierszowa.

_mbccpy_s

Mapy i makro lub funkcja śródwierszowa.

Wymagania

Procedura

Wymagany nagłówek

_mbccpy_s

<mbCiąg.h>

_mbccpy_s_l

<mbCiąg.h>

Aby uzyskać więcej informacji na temat zgodności – zobacz: Zgodność.

Zobacz też

Informacje

Regionalne

Interpretacja wielobajtowych sekwencji znaków

_mbclen, mblen, _mblen_l