strcat_s、wcscat_s、_mbscat_s、_mbscat_s_lstrcat_s, wcscat_s, _mbscat_s, _mbscat_s_l

文字列を追加します。Appends a string. これらのバージョンの strcat、wcscat、_mbscat は、「CRT のセキュリティ機能」の説明にあるとおり、セキュリティが強化されました。These versions of strcat, wcscat, _mbscat have security enhancements, as described in Security Features in the CRT.

重要

_mbscat_s_mbscat_s_lは、Windows ランタイムで実行されるアプリケーションでは使用できません。_mbscat_s and _mbscat_s_l cannot be used in applications that execute in the Windows Runtime. 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。For more information, see CRT functions not supported in Universal Windows Platform apps.

構文Syntax

errno_t strcat_s(
   char *strDestination,
   size_t numberOfElements,
   const char *strSource
);
errno_t wcscat_s(
   wchar_t *strDestination,
   size_t numberOfElements,
   const wchar_t *strSource
);
errno_t _mbscat_s(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource
);
errno_t _mbscat_s_l(
   unsigned char *strDestination,
   size_t numberOfElements,
   const unsigned char *strSource,
   _locale_t locale
);
template <size_t size>
errno_t strcat_s(
   char (&strDestination)[size],
   const char *strSource
); // C++ only
template <size_t size>
errno_t wcscat_s(
   wchar_t (&strDestination)[size],
   const wchar_t *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource
); // C++ only
template <size_t size>
errno_t _mbscat_s_l(
   unsigned char (&strDestination)[size],
   const unsigned char *strSource,
   _locale_t locale
); // C++ only

パラメーターParameters

strDestinationstrDestination
null で終わる追加先の文字列バッファー。Null-terminated destination string buffer.

numberOfElementsnumberOfElements
追加先の文字列バッファーのサイズ。Size of the destination string buffer.

strSourcestrSource
null で終わる元の文字列バッファー。Null-terminated source string buffer.

localelocale
使用するロケール。Locale to use.

戻り値Return Value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Zero if successful; an error code on failure.

エラー条件Error Conditions

strDestinationstrDestination numberOfElementsnumberOfElements strSourcestrSource 戻り値Return value Strdestinationの内容Contents of strDestination
NULLまたは未終了NULL or unterminated 任意any 任意any EINVALEINVAL 変更されないnot modified
任意any 任意any NULLNULL EINVALEINVAL Strdestination[0] を0に設定します。strDestination[0] set to 0
任意any 0 または小さすぎる0, or too small 任意any ERANGEERANGE Strdestination[0] を0に設定します。strDestination[0] set to 0

RemarksRemarks

Strcat_s関数は、 Strsourcestrsourceに追加し、結果の文字列を null 文字で終了します。The strcat_s function appends strSource to strDestination and terminates the resulting string with a null character. Strsourceの最初の文字は、 strsourceの終端の null 文字を上書きします。The initial character of strSource overwrites the terminating null character of strDestination. コピー元とコピー先の文字列が重なり合っている場合、 strcat_sの動作は未定義です。The behavior of strcat_s is undefined if the source and destination strings overlap.

2 つ目のパラメーターは、バッファーの残りのサイズではなく、合計サイズであることに注意してください。Note that the second parameter is the total size of the buffer, not the remaining size:

char buf[16];
strcpy_s(buf, 16, "Start");
strcat_s(buf, 16, " End");               // Correct
strcat_s(buf, 16 - strlen(buf), " End"); // Incorrect

wcscat_s_mbscat_sは、 strcat_sのワイド文字バージョンとマルチバイト文字バージョンです。wcscat_s and _mbscat_s are wide-character and multibyte-character versions of strcat_s. Wcscat_sの引数と戻り値はワイド文字列です。これらの _mbscat_sはマルチバイト文字列です。The arguments and return value of wcscat_s are wide-character strings; those of _mbscat_s are multibyte-character strings. それ以外では、これらの関数の動作は同じです。These three functions behave identically otherwise.

Strdestinationが null ポインターであるか null で終わらない場合、またはstrdestinationnull ポインターの場合、または変換先の文字列が小さすぎる場合は、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーが呼び出されます。If strDestination is a null pointer, or is not null-terminated, or if strSource is a NULL pointer, or if the destination string is too small, the invalid parameter handler is invoked, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数はeinvalを返し、 errnoeinvalに設定します。If execution is allowed to continue, these functions return EINVAL and set errno to EINVAL.

_Lサフィックスを持つ関数のバージョンは同じ動作ですが、現在のロケールの代わりに渡されたロケールパラメーターを使用します。The versions of functions that have the _l suffix have the same behavior, but use the locale parameter that's passed in instead of the current locale. 詳細については、「 Locale」を参照してください。For more information, see Locale.

C++ では、これらの関数の使用はテンプレートのオーバーロードによって簡素化されます。オーバーロードでは、バッファー長を自動的に推論できる (サイズの引数を指定する必要がなくなる) だけでなく、古くてセキュリティが万全ではない関数を新しく安全な関数に自動的に置き換えることができます。In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. 詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。For more information, see Secure Template Overloads.

これらの関数のデバッグライブラリバージョンは、最初にバッファーを0xFE で埋めます。The debug library versions of these functions first fill the buffer with 0xFE. この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。To disable this behavior, use _CrtSetDebugFillThreshold.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcscat_s_tcscat_s strcat_sstrcat_s _mbscat_s_mbscat_s wcscat_swcscat_s

[要件]Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
strcat_sstrcat_s <string.h><string.h>
wcscat_swcscat_s <string.h> または <wchar.h><string.h> or <wchar.h>
_mbscat_s_mbscat_s <mbstring.h><mbstring.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.

Example

strcpy_s、wcscpy_s、_mbscpy_s のコード例を参照してください。See the code example in strcpy_s, wcscpy_s, _mbscpy_s.

関連項目See also

文字列操作String Manipulation
strncat、_strncat_l、wcsncat、_wcsncat_l、_mbsncat、_mbsncat_lstrncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l
strncmp、wcsncmp、_mbsncmp、_mbsncmp_lstrncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_lstrncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l
_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l
strrchr、wcsrchr、_mbsrchr、_mbsrchr_lstrrchr, wcsrchr, _mbsrchr, _mbsrchr_l
strspn、wcsspn、_mbsspn、_mbsspn_lstrspn, wcsspn, _mbsspn, _mbsspn_l