wcscat, wcscat_s
Объявлено в заголовочном файле <wchar.h> | ||
|---|---|---|
wchar_t* wcscat( wchar_t* dest, const wchar_t* src ); | (1) |
(начиная с 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) Добавляет копию широкого строкового литерала, на который указывает
2) То же, что и (1), за исключением того, что функция может перезаписать оставшуюся часть массива назначения (от последнего записанного символа до src, в конец широкой строки, на которую указывает dest. Широкий символ src[0] заменяет нулевой терминатор в конце dest. Полученная широкая строка завершается нулевым символом. Поведение не определено, если массив назначения недостаточно велик для содержимого обеих строк src и dest и завершающего нулевого широкого символа. Поведение не определено, если строки перекрываются.destsz) неопределёнными значениями, а также во время выполнения обнаруживаются следующие ошибки и вызывается установленная в данный момент функция обработчика ограничений: -
srcилиdestявляется нулевым указателем -
destszравно нулю или большеRSIZE_MAX / sizeof(wchar_t) - в первых
destszшироких символахdestнет нулевого терминатора - произойдёт усечение (доступного места в конце
destнедостаточно для размещения всех широких символовsrc, включая нулевой терминатор) - произойдёт перекрытие исходной строки и строки назначения
Как и для всех функций с проверкой границ, доступность
wcscat_s гарантируется только в том случае, если реализация определяет __STDC_LIB_EXT1__, а пользователь перед подключением <wchar.h> определяет __STDC_WANT_LIB_EXT1__ как целочисленную константу 1.Параметры
| dest | - | указатель на завершаемую нулём широкую строку, в конец которой следует добавить символы |
| src | - | указатель на завершаемую нулём широкую строку, из которой следует выполнить копирование |
| destsz | - | максимальное количество записываемых символов, обычно размер буфера назначения |
Возвращаемое значение
1) возвращает копию
dest
2) при успешном выполнении возвращает ноль, при ошибке — ненулевое значение. Кроме того, при ошибке записывает
L'\0' в dest[0] (если только dest не является нулевым указателем, а destsz не равно нулю и не больше RSIZE_MAX / sizeof(wchar_t)).Пример
#include <locale.h>
#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t str[50] = L"Земля, прощай.";
wcscat(str, L" ");
wcscat(str, L"В добрый путь.");
setlocale(LC_ALL, "en_US.utf8");
printf("%ls", str);
}
Вывод:
Земля, прощай. В добрый путь.
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.31.4.3.1 Функция wcscat (стр. 439)
- K.3.9.3.2.1 Функция wcscat_s (стр. 665–666)
- Стандарт 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/c/string/wide/wcscat