トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
ワイド文字列を連結する。 |
|
ヘッダ |
||
形式 |
errno_t wcscat_s(wchar_t* restrict s1, rsize_t s1max, const wchar_t* restrict s2); | |
引数 |
s1 |
連結先の配列。ヌルポインタは不可。 |
s1max |
s1 の要素数。 |
|
s2 |
連結元のワイド文字列。ヌルポインタは不可 |
|
戻り値 |
成功したら 0 が返される。何らかのエラーが発生したら 0以外が返される。 |
|
詳細 |
などの危険を避けつつ、s1 の末尾へ s2 の内容を連結する。s2 のワイド文字列がワイド終端文字も含めて、すべて s1 へ連結できた場合に限って成功であり、0 を返す。0以外の値が返されるときは、実行時制約違反が起きている。 以下のいずれかの場合に、実行時制約違反となる。
実行時制約違反となった場合、s1 がヌルポインタでなく、s1max が 0 より大きく RSIZE_MAX 以下であれば、s1[0] にヌルワイド文字が書き込まれる。また、実行時制約ハンドラとして登録されている関数が呼び出される。 実行時制約ハンドラとしてデフォルトで登録されている関数の動作は処理系定義である。set_constraint_handler_s関数を使うと、独自で定義した関数を実行時制約ハンドラとして登録でき、動作を置き換えられる。 この関数は、__STDC_LIB_EXT1__ が定義されている処理系でのみ使用できる。また、この関数を使用するのなら、<wchar.h> をインクルードする前に、__STDC_WANT_LIB_EXT1__ という名前のマクロを、置換結果 1 として定義することが作法となっているが、これを行わずとも関数を使用できる処理系もあり得る。 |
|
注意 |
Visual Studio 2017 に定義されている wcscat_s関数は、Microsoft の独自仕様のものである(参考リンク 1 参照)。特に、実行時制約に関する仕様は実装されておらず、代わりに独自仕様のパラメータ検証が行われる。第1引数か第3引数がヌルポインタの場合や、第2引数が連結後の文字数に対して小さすぎる場合にエラーとなる。 | |
使用例 |
実行結果:
|
|
関連 |
この関数が定義されていない場合は、wcscat関数やwcsncat関数を、バッファオーバーフローに注意しつつ使用する。 マルチバイト文字列版の strcat_s関数がある。 |
|
解説章 |
()
の前後の空白の空け方)(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |