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)
と同様ですが、宛先配列の残りの部分を未規定の値で上書きする可能性があり、以下のエラーが実行時に検出され、現在設定されている
constraint handler
関数を呼び出す点が異なります:
-
- src または dest がnullポインタである場合
- destsz がゼロまたは RSIZE_MAX / sizeof ( wchar_t ) より大きい場合
- destsz が wcsnlen_s ( src, destsz ) 以下である場合(つまり切り捨てが発生する場合)
- ソース文字列と宛先文字列の間にオーバーラップが発生する場合
-
すべての境界チェック付き関数と同様に、
wcscpy_sは、実装によって __STDC_LIB_EXT1__ が定義されており、かつユーザーが <wchar.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義している場合にのみ利用可能であることが保証されます。
目次 |
パラメータ
| dest | - | コピー先のワイド文字配列へのポインタ |
| src | - | コピー元のヌル終端ワイド文字列へのポインタ |
| destsz | - | 書き込む最大文字数(通常は宛先バッファのサイズ) |
戻り値
1)
dest
のコピーを返す
2)
成功時はゼロを返し、エラー時は非ゼロを返します。また、エラー時には
L
'
\0
'
を
dest
[
0
]
に書き込みます(ただし
dest
がnullポインタの場合、または
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: TBD)
-
- K.3.9.2.1.1 wcscpy_s関数 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.29.4.1.2 wcscpy関数 (p: TBD)
-
- K.3.9.2.1.1 wcscpy_s関数 (p: TBD)
- 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)
|
重複しない2つの配列間で、指定された数のワイド文字をコピーする
(関数) |
|
(C11)
|
文字列を別の文字列にコピーする
(関数) |
|
C++ documentation
for
wcscpy
|
|