wcscat, wcscat_s
Defined in header <wchar.h> |
||
|---|---|---|
| (1) | ||
wchar_t *wcscat( wchar_t *dest, const wchar_t *src ); |
(с C95) (до C99) |
|
wchar_t *wcscat( wchar_t *restrict dest, const wchar_t *restrict src ); |
(с C99) | |
errno_t wcscat_s( wchar_t *restrict dest, rsize_t destsz,
const wchar_t *restrict src );
|
(2) | (с C11) |
1) Присоединяет копию широкой строки, на которую указывает
src, к концу широкой строки, на которую указывает dest. Широкий символ src[0] заменяет нуль-терминатор в конце dest. Результирующая широкая строка завершается нулем. Поведение не определено, если целевой массив недостаточно велик для содержимого как str, так и dest, и завершающего нулевого широкого символа. Поведение не определено, если строки перекрываются.
2) То же, что (1), за исключением того, что он может перезаписать остальную часть целевого массива (с последнего написанного символа в
destsz) неопределенными значениями и что следующие ошибки обнаруживаются во время выполнения и вызывают функцию обработчика ограничений, установленную в данный момент: обработчик ограничений: -
-
srcилиdestявляется указателем на нуль -
destszравно нулю или большеRSIZE_MAX/sizeof(wchar_t) - в первых
destszшироких символахdestнет нуль-терминатора - произойдёт обрезка (доступного места в конце
destне хватит для каждого широкого символа, включая нуль-терминатор, изsrc) - произойдёт перекрытие между исходной и целевой строками
-
- Как и во всех функциях с проверкой границ,
wcscat_sгарантированно доступна только в том случае, если__STDC_LIB_EXT1__определена реализацией, и если пользователь определит__STDC_WANT_LIB_EXT1__как целочисленную константу1перед включением<wchar.h>.
Параметры
| dest | - | указатель на завершающуюся нулём широкую строку, к которой нужно добавить |
| src | - | указатель на завершающуюся нулём широкую строку, из которой нужно скопировать |
| destsz | - | максимальное количество символов для записи, обычно размер буфера назначения |
Возвращаемое значение
1) возвращает копию
dest
2) возвращает ноль при успехе, ненулевое значение при ошибке. Также при ошибке записывает
L'\0' в dest[0] (если dest не является указателем на ноль или destsz не равно нулю или больше RSIZE_MAX/sizeof(wchar_t)).Пример
#include <wchar.h>
#include <stdio.h>
#include <locale.h>
int main(void)
{
wchar_t str[50] = L"Земля, прощай.";
wcscat(str, L" ");
wcscat(str, L"В добрый путь.");
setlocale(LC_ALL, "en_US.utf8");
printf("%ls", str);
}Вывод:
Земля, прощай. В добрый путь.
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.29.4.3.1 Функция wcscat (стр: 315)
- K.3.9.2.2.1 Функция wcscat_s (стр: 466)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.29.4.3.1 Функция wcscat (стр: 432)
- K.3.9.2.2.1 Функция wcscat_s (стр: 642-643)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.24.4.3.1 Функция wcscat (стр: 378)
См. также
|
(C95)(C11) |
присоединяет определенное количество широких символов из одной широкой строки к другой (функция) |
|
(C11) |
конкатенирует две строки (функция) |
|
(C95)(C11) |
копирует одну широкую строку в другую (функция) |
Документация C++ для wcscat |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/wide/wcscat