Namespaces
Variants

wcscat, wcscat_s

ja.cppreference.net より
 
 
 
 
ヘッダ <wchar.h>
wchar_t* wcscat( wchar_t* dest, const wchar_t* src );
(1) (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 の末尾にあるナル終端文字を置き換える。結果のワイド文字列はナル終端される。src と dest の内容と終端のナルワイド文字を合わせて格納するのに十分な大きさが宛先配列にない場合、動作は未定義である。文字列が重なっている場合、動作は未定義である。
2) 以下を除いて (1) と同じである。すなわち、宛先配列の残り部分(最後に書き込まれた位置 destsz 以降)を未規定の値で上書きする可能性があり、以下のエラーが実行時に検出され、現在インストールされている 制約ハンドラ 関数を呼び出す:
  • src または dest がヌルポインタである
  • destsz が 0 か RSIZE_MAX / sizeof(wchar_t)
  • より大きいdestsz の最初の dest
  • 個のワイド文字にナル終端文字がないdest の末尾の利用可能な容量が src のすべてのワイド文字(ナル終端文字を含む)を収められないために切り詰めが発生する
  • コピー元とコピー先の文字列の間に重なりが発生する
他の境界チェック関数と同様に、wcscat_s は、実装が __STDC_LIB_EXT1__ を定義しており、かつユーザが __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義してから <wchar.h> をインクルードする場合にのみ、利用が保証される。

パラメータ

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

戻り値

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

例

#include <locale.h>
#include <stdio.h>
#include <wchar.h>

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

出力:

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

参考文献

  • C23 規格 (ISO/IEC 9899:2024):
  • 7.31.4.3.1 wcscat 関数 (p: 439)
  • K.3.9.3.2.1 wcscat_s 関数 (p: 665-666)
  • 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)
ワイド文字列を別のワイド文字列にコピーする
(関数)