wcscpy, wcscpy_s
From cppreference.net
|
Определено в заголовочном файле
<wchar.h>
|
||
| (1) | ||
|
wchar_t
*
wcscpy
(
wchar_t
*
dest,
const
wchar_t
*
src
)
;
|
(начиная с C95)
(до C99) |
|
|
wchar_t
*
wcscpy
(
wchar_t
*
restrict
dest,
const
wchar_t
*
restrict
src
)
;
|
(начиная с C99) | |
|
errno_t wcscpy_s
(
wchar_t
*
restrict
dest, rsize_t destsz,
const wchar_t * restrict src ) ; |
(2) | (начиная с C11) |
1)
Копирует широкую строку, на которую указывает
src
(включая завершающий нулевой широкий символ), в массив широких символов, на который указывает
dest
. Поведение не определено, если массив
dest
недостаточно велик. Поведение не определено, если строки перекрываются.
2)
Аналогично
(1)
, за исключением того, что она может заполнить остаток массива назначения неопределёнными значениями, а также следующие ошибки обнаруживаются во время выполнения и вызывают установленную в данный момент
функцию обработки ограничений
:
-
- src или dest является нулевым указателем
- destsz равен нулю или превышает RSIZE_MAX / sizeof ( wchar_t )
- destsz меньше или равен wcsnlen_s ( src, destsz ) , другими словами, произошло бы усечение
- возникает перекрытие между исходной и целевой строками
-
Как и все функции с проверкой границ,
wcscpy_sгарантированно доступна только если реализация определяет __STDC_LIB_EXT1__ и если пользователь определяет __STDC_WANT_LIB_EXT1__ как целочисленную константу 1 перед включением <wchar.h> .
Содержание |
Параметры
| dest | - | указатель на массив широких символов для копирования |
| src | - | указатель на широкую строку с нулевым завершением для копирования |
| destsz | - | максимальное количество символов для записи, обычно размер буфера назначения |
Возвращаемое значение
1)
возвращает копию
dest
2)
возвращает ноль при успешном выполнении, возвращает ненулевое значение при ошибке. Также при ошибке записывает
L
'
\0
'
в
dest
[
0
]
(если
dest
не является нулевым указателем и
destsz
не равен нулю и не превышает
RMAX_SIZE
/
sizeof
(
wchar_t
)
).
Пример
Запустить этот код
#include <locale.h> #include <stdio.h> #include <wchar.h> int main(void) { wchar_t* src = L"犬 means dog"; // src[0] = L'狗' ; // this would be undefined behavior wchar_t dst[wcslen(src) + 1]; // +1 for the null terminator wcscpy(dst, src); dst[0] = L'狗'; // OK setlocale(LC_ALL, "en_US.utf8"); printf("src = %ls\ndst = %ls\n", src, dst); }
Вывод:
src = 犬 means dog dst = 狗 means dog
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.29.4.1.2 Функция wcscpy (стр.: TBD)
-
- K.3.9.2.1.1 Функция wcscpy_s (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.29.4.1.2 Функция wcscpy (стр.: TBD)
-
- K.3.9.2.1.1 Функция wcscpy_s (стр.: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.29.4.1.2 Функция wcscpy (стр. 430)
-
- K.3.9.2.1.1 Функция wcscpy_s (стр. 639)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.24.4.1.2 Функция wcscpy (стр: 376)
Смотрите также
|
(C95)
(C11)
|
копирует определённое количество широких символов из одной строки в другую
(функция) |
|
(C95)
(C11)
|
копирует определённое количество широких символов между двумя неперекрывающимися массивами
(функция) |
|
(C11)
|
копирует одну строку в другую
(функция) |
|
Документация C++
для
wcscpy
|
|