wcsncat, wcsncat_s
|
Определено в заголовочном файле
<wchar.h>
|
||
| (1) | ||
|
wchar_t
*
wcsncat
(
wchar_t
*
dest,
const
wchar_t
*
src,
size_t
count
)
;
|
(начиная с C95)
(до C99) |
|
|
wchar_t
*
wcsncat
(
wchar_t
*
restrict
dest,
const wchar_t * restrict src, size_t count ) ; |
(начиная с C99) | |
|
errno_t wcsncat_s
(
wchar_t
*
restrict
dest, rsize_t destsz,
const wchar_t * restrict src, rsize_t count ) ; |
(2) | (начиная с C11) |
count
широких символов из широкой строки, на которую указывает
src
, останавливаясь, если копируется нулевой терминатор, в конец строки символов, на которую указывает
dest
. Широкий символ
src
[
0
]
заменяет нулевой терминатор в конце
dest
. Нулевой терминатор всегда добавляется в конце (таким образом, максимальное количество широких символов, которое функция может записать, составляет
count
+
1
).
str
, так и
dest
, а также завершающего нулевого широкого символа.
destsz
), и что следующие ошибки обнаруживаются во время выполнения и вызывают текущую установленную
функцию обработки ограничений
:
-
-
srcилиdestявляется нулевым указателем -
destszилиcountравно нулю или больше RSIZE_MAX / sizeof ( wchar_t ) -
отсутствует нулевой широкий символ в первых
destszшироких символахdest -
произойдет усечение:
countили длинаsrc(в зависимости от того, что меньше) превышает доступное пространство между нулевым терминаторомdestиdestsz. - произойдет перекрытие между исходной и целевой строками
-
-
Как и все функции с проверкой границ,
wcsncat_sгарантированно доступна только если __STDC_LIB_EXT1__ определено реализацией и если пользователь определяет __STDC_WANT_LIB_EXT1__ как целочисленную константу 1 перед включением <wchar.h> .
Содержание |
Параметры
| dest | - | указатель на широкую строку с нулевым завершителем, к которой нужно добавить |
| src | - | указатель на широкую строку с нулевым завершителем, из которой нужно копировать |
| count | - | максимальное количество широких символов для копирования |
| destsz | - | размер буфера назначения |
Возвращаемое значение
dest
dest
не является нулевым указателем или
destsz
не равен нулю или не больше
RSIZE_MAX
/
sizeof
(
wchar_t
)
).
Примечания
Хотя усечение для соответствия целевому буферу представляет собой угрозу безопасности и, следовательно, нарушение ограничений времени выполнения для
wcsncat_s
, можно получить поведение с усечением, указав
count
равным размеру целевого массива минус один: функция скопирует первые
count
широких символов и добавит нулевой терминатор как обычно:
wcsncat_s
(
dst,
sizeof
dst
/
sizeof
*
dst, src,
(
sizeof
dst
/
sizeof
*
dst
)
-
wcsnlen_s
(
dst,
sizeof
dst
/
sizeof
*
dst
)
-
1
)
;
Пример
Возможный вывод:
Земля, прощай. В добрый
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.29.4.3.2 Функция wcsncat (стр. 315)
-
- K.3.9.2.2.2 Функция wcsncat_s (стр. 466-467)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.29.4.3.2 Функция wcsncat (стр: 432-433)
-
- K.3.9.2.2.2 Функция wcsncat_s (стр: 643-644)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.24.4.3.2 Функция wcsncat (стр: 378-379)
Смотрите также
|
(C95)
(C11)
|
добавляет копию одной широкой строки к другой
(функция) |
|
(C11)
|
объединяет определенное количество символов двух строк
(функция) |
|
(C95)
(C11)
|
копирует одну широкую строку в другую
(функция) |
|
C++ documentation
для
wcsncat
|
|