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


strcat_s, , wcscat_s_mbscat_s_mbscat_s_l

Дополняет строку. Эти версии , _mbscatwcscatимеют улучшения безопасности, как описано в функциях strcatбезопасности в CRT.

Внимание

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

Синтаксис

errno_t strcat_s(
   char *strDestination,
   size_t numberOfElements,
   const char *strSource
);
errno_t wcscat_s(
   wchar_t *strDestination,
   size_t numberOfElements,
   const wchar_t *strSource
);
errno_t _mbscat_s(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource
);
errno_t _mbscat_s_l(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource,
   _locale_t locale
);
template <size_t size>
errno_t strcat_s(
   char (&strDestination)[size],
   const char *strSource
); // C++ only
template <size_t size>
errno_t wcscat_s(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s_l(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource,
   _locale_t locale
); // C++ only

Параметры

strDestination
Строковый буфер назначения, завершающийся символом NULL.

numberOfElements
Размер строкового буфера назначения.

strSource
Исходная строка, завершающаяся нулем.

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

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

Возвращает нуль в случае успеха или код ошибки в случае неудачи.

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

strDestination numberOfElements strSource Возвращаемое значение Содержимое strDestination
NULL или без признака завершения любое любое EINVAL не изменено
любое любое NULL EINVAL strDestination[0] имеет значение 0;
любое 0 или слишком мал любое ERANGE strDestination[0] имеет значение 0;

Замечания

Функция strcat_s добавляет strSource в strDestination и завершает результирующую строку символом NULL. Начальный символ строки strSource переопределяет завершающий символ NULL строки strDestination. При перекрытии исходного и конечного буферов поведение strcat_s не определено.

Второй параметр — это общий размер буфера, а не оставшийся размер:

char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End");               // Correct
strcat_s(buf, 16 - strlen(buf), " End"); // Incorrect

Функции wcscat_s и _mbscat_s являются версиями функции strcat_s для расширенных и многобайтовых символов. Аргументы и возвращаемые значения wcscat_s являются строками с широкими символами. Аргументы и возвращаемое значение _mbscat_s являются многобайтовыми строками. В остальном эти три функции ведут себя идентично.

Если strDestination указатель имеет значение NULL или не завершается значение NULL, или если это указатель, или strSource NULL если целевая строка слишком мала, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если продолжение выполнения разрешено, эти функции возвращают EINVAL и устанавливают для errno значение EINVAL.

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

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

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

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

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

TCHAR.H рутина _UNICODE и _MBCS не определен _MBCS Определенные _UNICODE Определенные
_tcscat_s strcat_s _mbscat_s wcscat_s

Требования

Маршрут Обязательный заголовок
strcat_s <string.h>
wcscat_s <string.h> или <wchar.h>
_mbscat_s <mbstring.h>

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

Пример

См. пример кода в strcpy_s, wcscpy_s_mbscpy_s.

См. также

Обработка строк
strncat, , _strncat_l_wcsncat_lwcsncat_mbsncat,_mbsncat_l
strncmp, , wcsncmp_mbsncmp_mbsncmp_l
strncpy, , _strncpy_l_wcsncpy_lwcsncpy_mbsncpy,_mbsncpy_l
_strnicmp, , _wcsnicmp_strnicmp_l_mbsnicmp_wcsnicmp_l,_mbsnicmp_l
strrchr, , wcsrchr_mbsrchr_mbsrchr_l
strspn, , wcsspn_mbsspn_mbsspn_l