Namespaces
Variants

wcscpy, wcscpy_s

From cppreference.net
< c ‎ | string ‎ | wide
Определено в заголовочном файле <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)

Смотрите также

копирует определённое количество широких символов из одной строки в другую
(функция)
копирует определённое количество широких символов между двумя неперекрывающимися массивами
(функция)
копирует одну строку в другую
(функция)