wcscat, wcscat_s
С ru.cppreference.net
| Определено в заголовке <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) Добавляет копию широкой строки, на которую указывает
src, в конец широкой строки, на которую указывает dest. Широкий символ src[0] заменяет нулевой терминатор в конце dest. Результирующая широкая строка завершается нулём. Поведение не определено, если целевой массив недостаточно велик для содержимого обеих строк src и 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\n | -\n | указатель на широкую строку, завершающуюся нулём, к которой нужно добавить\n |
| src\n | -\n | указатель на широкую строку, завершающуюся нулём, из которой нужно копировать\n |
| destsz\n | -\n | максимальное количество символов для записи, обычно размер целевого буфера |
Возвращаемое значение
1) возвращает копию
dest2) возвращает ноль при успехе, возвращает ненулевое значение при ошибке. Также при ошибке записывает
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);
}
Вывод:\n
Земля, прощай. В добрый путь.
Ссылки
- Стандарт 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
| |