Namespaces
Variants

wcscat, wcscat_s

From cppreference.net
< c ‎ | string ‎ | wide
ヘッダーで定義 <wchar.h>
(1)
wchar_t * wcscat ( wchar_t * dest, const wchar_t * src ) ;
(C95以降)
(C99まで)
wchar_t * wcscat ( wchar_t * restrict dest, const wchar_t * restrict src ) ;
(C99以降)
errno_t wcscat_s ( wchar_t * restrict dest, rsize_t destsz,
const wchar_t * restrict src ) ;
(2) (C11以降)
1) ワイド文字列 src が指す文字列のコピーを、ワイド文字列 dest が指す文字列の末尾に追加します。ワイド文字 src[0] dest の末尾にあるナルターミネータを置き換えます。結果のワイド文字列はナルターミネートされます。宛先配列が str dest の内容および終端ナルワイド文字の両方を保持するのに十分な大きさでない場合、動作は未定義です。文字列がオーバーラップしている場合の動作は未定義です。
2) (1) と同様であるが、以下の点が異なる:宛先配列の残りの部分(最後に書き込まれた文字から destsz まで)を不定値で上書きする可能性があり、以下のエラーが実行時に検出され、現在インストールされている constraint handler 関数を呼び出す:
  • src または dest がnullポインタである
  • destsz がゼロまたは RSIZE_MAX / sizeof ( wchar_t ) より大きい
  • dest の先頭 destsz ワイド文字内にnull終端文字がない
  • 切り捨てが発生する( dest の末尾の利用可能な領域が src のすべてのワイド文字(null終端文字を含む)を格納できない)
  • ソース文字列と宛先文字列がオーバーラップする
すべての境界チェック付き関数と同様に、 wcscat_s は、実装によって __STDC_LIB_EXT1__ が定義され、かつユーザーが <wchar.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義した場合にのみ利用可能であることが保証される。

目次

パラメータ

dest - 追加先のヌル終端ワイド文字列へのポインタ
src - コピー元のヌル終端ワイド文字列へのポインタ
destsz - 書き込む最大文字数(通常は宛先バッファのサイズ)

戻り値

1) dest のコピーを返す
2) 成功時はゼロを返し、エラー時は非ゼロを返します。また、エラー時には L ' \0 ' dest [ 0 ] に書き込みます(ただし dest がnullポインタの場合、または destsz がゼロまたは RSIZE_MAX / sizeof ( wchar_t ) より大きい場合を除く)。

#include <wchar.h> 
#include <stdio.h>
#include <locale.h>
int main(void) 
{
    wchar_t str[50] = L"Земля, прощай.";
    wcscat(str, L" ");
    wcscat(str, L"В добрый путь.");
    setlocale(LC_ALL, "en_US.utf8");
    printf("%ls", str);
}

出力:

Земля, прощай. В добрый путь.

参考文献

  • C17規格 (ISO/IEC 9899:2018):
  • 7.29.4.3.1 wcscat関数 (p: 315)
  • K.3.9.2.2.1 wcscat_s関数 (p: 466)
  • C11標準 (ISO/IEC 9899:2011):
  • 7.29.4.3.1 wcscat関数 (p: 432)
  • K.3.9.2.2.1 wcscat_s関数 (p: 642-643)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.24.4.3.1 wcscat関数 (p: 378)

関連項目

ワイド文字列に別のワイド文字列から指定された数のワイド文字を追加する
(関数)
二つの文字列を連結する
(関数)
(C95) (C11)
ワイド文字列を別のワイド文字列にコピーする
(関数)