wcscpy, wcscpy_s
來自 cppreference.com
在標頭檔案 <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),換句話說,會發生截斷
- 源字串和目標字串之間會發生重疊
- 與所有邊界檢查函式一樣,只有在實現定義了 __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)
[編輯] 另請參閱
(C95)(C11) |
將一定數量的寬字元從一個字串複製到另一個字串 (函式) |
(C95)(C11) |
在兩個不重疊的陣列之間複製一定數量的寬字元 (函式) |
(C11) |
將一個字串複製到另一個字串 (函式) |
C++ 文件,關於 wcscpy
|