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


_mbsnbcat_s, _mbsnbcat_s_l

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

Важно!

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

Синтаксис

errno_t _mbsnbcat_s(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count
);
errno_t _mbsnbcat_s_l(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbcat_s(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbcat_s_l(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count,
   _locale_t locale
); // C++ only

Параметры

dest
Многобайтовая строка назначения, завершаемая нуль-символом.

sizeInBytes
Размер буфера dest в байтах.

src
Исходная многобайтовая строка, завершаемая нуль-символом.

count
Число байтов из src, добавляемых к dest.

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

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

Ноль в случае успешного выполнения; в противном случае — код ошибки.

Условия ошибок

dest sizeInBytes src Возвращаемое значение
NULL любое любое EINVAL
Любой <= 0 любое EINVAL
Любой любое NULL EINVAL

Если возникают какие-либо из условий ошибки, функция создает недопустимую ошибку параметра, как описано в разделе "Проверка параметров". Если ошибка обработана, функция возвращает EINVAL и задает для параметра errno значение EINVAL.

Замечания

Функция _mbsnbcat_s добавляет в строку dest не более count первых байт строки src. Если байт, который сразу же предшествует значению NULL, dest является байтом свинца, он перезаписывается начальным байтом src. В противном случае начальный байт строки src перезаписывает завершающий нуль-символ строки dest. Если байт NULL встречается в строке src до того как будет добавлено count байтов, функция _mbsnbcat_s добавляет все байты из строки src вплоть до нуль-символа. Если значение count больше длины строки src, вместо параметра src используется длина строки count. Результирующая строка завершается нуль-символом. Если копирование производится между перекрывающимися строками, поведение не определено.

Выходное значение зависит от параметра LC_CTYPE категории языкового стандарта. Дополнительные сведения см. в разделе setlocale. Версии этих функций идентичны, но в версиях без суффикса _l используется текущий языковой стандарт, а в версиях с суффиксом _l используется переданный параметр языкового стандарта. Дополнительные сведения см. в разделе Locale.

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

Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold.

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

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

Tchar.h Обычной _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcsncat_s strncat_s _mbsnbcat_s wcsncat_s
_tcsncat_s_l _strncat_s_l _mbsnbcat_s_l _wcsncat_s_l

Требования

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

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

См. также

Обработка строк
_mbsnbcmp, _mbsnbcmp_l
_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l
_mbsnbcpy, _mbsnbcpy_l
_mbsnbcpy_s, _mbsnbcpy_s_l
_mbsnbset, _mbsnbset_l
strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l