wcsncat, wcsncat_s
|
ヘッダーで定義
<wchar.h>
|
||
| (1) | ||
|
wchar_t
*
wcsncat
(
wchar_t
*
dest,
const
wchar_t
*
src,
size_t
count
)
;
|
(C95以降)
(C99まで) |
|
|
wchar_t
*
wcsncat
(
wchar_t
*
restrict
dest,
const wchar_t * restrict src, size_t count ) ; |
(C99以降) | |
|
errno_t wcsncat_s
(
wchar_t
*
restrict
dest, rsize_t destsz,
const wchar_t * restrict src, rsize_t count ) ; |
(2) | (C11以降) |
count
個のワイド文字を、
src
が指すワイド文字列から、
dest
が指す文字列の末尾に追加します。ヌル終端文字がコピーされた場合は停止します。ワイド文字
src
[
0
]
は
dest
の末尾のヌル終端文字を置き換えます。最終的には常にヌル終端文字が追加されます(したがって、この関数が書き込む可能性のあるワイド文字の最大数は
count
+
1
です)。
str
と
dest
の内容および終端ナルワイド文字に対して十分な大きさでない場合、動作は未定義です。
destsz
まで)を上書きする可能性があり、以下のエラーが実行時に検出され、現在インストールされている
constraint handler
関数を呼び出す点が異なります:
-
-
srcまたはdestがnullポインタ -
destszまたはcountがゼロまたは RSIZE_MAX / sizeof ( wchar_t ) より大きい -
destの最初のdestszワイド文字にnullワイド文字がない -
切り捨てが発生する場合:
countまたはsrcの長さ(いずれか小さい方)が、destのnull終端文字とdestszの間の利用可能な領域を超える - ソース文字列と宛先文字列の間にオーバーラップが発生する
-
-
すべての境界チェック付き関数と同様に、
wcsncat_sは、実装によって __STDC_LIB_EXT1__ が定義されており、かつユーザーが <wchar.h> を含める前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義している場合にのみ利用可能であることが保証されます。
目次 |
パラメータ
| dest | - | 追加先のヌル終端ワイド文字列へのポインタ |
| src | - | コピー元のヌル終端ワイド文字列へのポインタ |
| count | - | コピーする最大ワイド文字数 |
| destsz | - | 宛先バッファのサイズ |
戻り値
dest
のコピーを返す
dest
がnullポインタの場合、または
destsz
がゼロまたは
RSIZE_MAX
/
sizeof
(
wchar_t
)
より大きい場合は除く)。
注記
宛先バッファに収まるように切り詰めることはセキュリティリスクであるため、
wcsncat_s
の実行時制約違反となりますが、
count
を宛先配列のサイズから1を引いた値に指定することで、切り詰め動作を実現することが可能です。この場合、最初の
count
個のワイド文字をコピーし、常通りナルターミネータを追加します:
wcsncat_s
(
dst,
sizeof
dst
/
sizeof
*
dst, src,
(
sizeof
dst
/
sizeof
*
dst
)
-
wcsnlen_s
(
dst,
sizeof
dst
/
sizeof
*
dst
)
-
1
)
;
例
出力例:
Земля, прощай. В добрый
参考文献
- C17規格 (ISO/IEC 9899:2018):
-
- 7.29.4.3.2 wcsncat関数 (p: 315)
-
- K.3.9.2.2.2 wcsncat_s関数 (p: 466-467)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.29.4.3.2 wcsncat関数 (p: 432-433)
-
- K.3.9.2.2.2 wcsncat_s関数 (p: 643-644)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.24.4.3.2 wcsncat関数 (p: 378-379)
関連項目
|
(C95)
(C11)
|
ワイド文字列を別のワイド文字列に追加する
(関数) |
|
(C11)
|
二つの文字列の特定の文字数を連結する
(関数) |
|
(C95)
(C11)
|
ワイド文字列を別のワイド文字列にコピーする
(関数) |
|
C++ドキュメント
for
wcsncat
|
|