Namespaces
Variants

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) возвращает копию 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);
}

Вывод:\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)
копирует одну широкую строку в другую
(функция)