Поделиться через


_mbccpy_s, _mbccpy_s_l

Копирует один многобайтовый символ из одной строки в другую. Эти версии имеют _mbccpy_lулучшения безопасности, как описано в функциях _mbccpyбезопасности в CRT.

Важно!

Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.

Синтаксис

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

Параметры

dest
Место назначения копирования.

buffSizeInBytes
Размер буфера назначения.

pCopied
Заполняется числом скопированных байтов (1 или 2 в случае успешного выполнения). Если это значение не важно, передайте NULL.

src
Многобайтовый символ для копирования.

locale
Используемый языковой стандарт.

Возвращаемое значение

Возвращает нуль в случае успеха или код ошибки в случае неудачи. Если src или dest есть NULLbuffSizeinBytes или больше байтов копируются destв, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если выполнение разрешено продолжать, функция возвращается EINVALи errno имеет значение EINVAL.

Замечания

Функция _mbccpy_s копирует один многобайтовый символ из src в dest. Если src не указывает на ведущий байт многобайтового символа, определяемого неявным вызовом _ismbblead, то копируется один байт, src указывающий на байт. Если src указывает на байт свинца, но следующий байт равен 0 и поэтому недопустим, то 0 копируется destв , имеет EILSEQзначение , errno а функция возвращаетсяEILSEQ.

_mbccpy_s не добавляет конца null; однако, если src указывает на пустой символ, то это значение NULL копируется dest в (как обычная однобайтовая копия).

Значение pCopied заполняется числом скопированных байтов. В случае успешного выполнения операции возможны значения 1 и 2. Если передано значение NULL, этот параметр не учитывается.

src копируется в dest pCopied Возвращаемое значение
не старший байт не старший байт 1 0
0 0 1 0
старший байт, за которым следует не 0 старший байт, за которым следует не 0 2 0
старший байт, за которым следует 0 0 1 EILSEQ

Вторая строка — это просто особый случай первой строки. В таблице предполагается buffSizeInBytes>, что это = pCopied.

Функция_mbccpy_s использует текущий языковой стандарт для любого поведения, зависящего от языкового стандарта. Функция _mbccpy_s_l идентична функции _mbccpy_s, но в функции _mbccpy_s_l для любого поведения, зависящего от языкового стандарта, используется переданный в параметре языковой стандарт.

В C++ использование этих функций упрощено шаблонными перегрузками; перегрузки могут определить длину буфера автоматически, устраняя необходимость указывать аргумент size. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Сопоставления подпрограмм универсального текста

Подпрограмма Tchar.h _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tccpy_s Сопоставляется макросу или встраиваемой функции. _mbccpy_s Сопоставляется макросу или встраиваемой функции.

Требования

Маршрут Обязательный заголовок
_mbccpy_s <mbstring.h>
_mbccpy_s_l <mbstring.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Локаль
Интерпретация последовательностей многобайтовых символов
_mbclen, mblen, _mblen_l