wcscpy, wcscpy_s
Defined in header <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:2023):
- 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 |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/string/wide/wcscpy