Spec-Zone.ru › C

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)

См. также

wcsncatwcsncat_s
(C95)(C11)
присоединяет определенное количество широких символов из одной широкой строки к другой
(функция)
strcatstrcat_s
(C11)
конкатенирует две строки
(функция)
wcscpywcscpy_s
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API