名稱空間
變體
操作

wcscpy, wcscpy_s

來自 cppreference.com
< 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) 相同,但它可能會用未指定的值覆蓋目標陣列的其餘部分,並且以下錯誤會在執行時被檢測到並呼叫當前安裝的 約束處理函式
  • srcdest 是空指標
  • destsz 為零或大於 RSIZE_MAX / sizeof(wchar_t)
  • destsz 小於或等於 wcsnlen_s(src, destsz),換句話說,會發生截斷
  • 源字串和目標字串之間會發生重疊
與所有邊界檢查函式一樣,只有在實現定義了 __STDC_LIB_EXT1__ 並且使用者在包含 <wchar.h> 之前將 __STDC_WANT_LIB_EXT1__ 定義為整數常量 1 時,才能保證 wcscpy_s 可用。

目錄

[編輯] 引數

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 函式 (p: 待定)
  • K.3.9.2.1.1 wcscpy_s 函式 (p: 待定)
  • C17 標準 (ISO/IEC 9899:2018)
  • 7.29.4.1.2 wcscpy 函式 (p: 待定)
  • K.3.9.2.1.1 wcscpy_s 函式 (p: 待定)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.29.4.1.2 wcscpy 函式 (p: 430)
  • K.3.9.2.1.1 wcscpy_s 函式 (p: 639)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.24.4.1.2 wcscpy 函式 (p: 376)

[編輯] 另請參閱

將一定數量的寬字元從一個字串複製到另一個字串
(函式) [編輯]
在兩個不重疊的陣列之間複製一定數量的寬字元
(函式) [編輯]
將一個字串複製到另一個字串
(函式) [編輯]
C++ 文件,關於 wcscpy