strcat_s
, , wcscat_s
_mbscat_s
_mbscat_s_l
Дополняет строку. Эти версии , _mbscat
wcscat
имеют улучшения безопасности, как описано в функциях 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_l
wcsncat
_mbsncat
,_mbsncat_l
strncmp
, , wcsncmp
_mbsncmp
_mbsncmp_l
strncpy
, , _strncpy_l
_wcsncpy_l
wcsncpy
_mbsncpy
,_mbsncpy_l
_strnicmp
, , _wcsnicmp
_strnicmp_l
_mbsnicmp
_wcsnicmp_l
,_mbsnicmp_l
strrchr
, , wcsrchr
_mbsrchr
_mbsrchr_l
strspn
, , wcsspn
_mbsspn
_mbsspn_l