次の方法で共有


_mbsnbcat_s, _mbsnbcat_s_l

マルチバイト文字列に、別のマルチバイト文字列の先頭の (最大) n バイトを追加します。 これらの関数は、CRT のセキュリティ機能で説明されているように、セキュリティが強化された_mbsnbcat_mbsnbcat_lのバージョンです。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

errno_t _mbsnbcat_s(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count
);
errno_t _mbsnbcat_s_l(
   unsigned char *dest,
   size_t sizeInBytes,
   const unsigned char *src,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbcat_s(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count
); // C++ only
template <size_t size>
errno_t _mbsnbcat_s_l(
   unsigned char (&dest)[size],
   const unsigned char *src,
   size_t count,
   _locale_t locale
); // C++ only

パラメーター

dest
NULL で終わるマルチバイト文字のコピー先文字列。

sizeInBytes
dest バッファーのサイズ (バイト単位)。

src
NULL で終わるマルチバイト文字のコピー元文字列。

count
src に追加される dest のバイト数。

locale
使用するロケール。

戻り値

正常に終了した場合は 0 を返し、それ以外の場合はエラー コードを返します。

エラー条件

dest sizeInBytes src 戻り値
NULL 任意 任意 EINVAL
Any <= 0 任意 EINVAL
Any 任意 NULL EINVAL

エラー状態のいずれかが発生した場合、「パラメーターの検証で説明されているように、関数は無効なパラメーター エラー生成します。 エラーが処理されたとき、関数は EINVAL を返し、errnoEINVAL を設定します。

解説

_mbsnbcat_s 関数は、dest に、src の先頭の最大 count バイトを追加します。 dest 内の null 文字の直前にあるバイトが先行バイトである場合、それは src の最初のバイトによって上書きされます。 そうでなければ、src の先頭のバイトは、dest の終端の null 文字を上書きします。 count バイトを追加する前に src に null バイトが現れた場合、_mbsnbcat_s は null 文字までの src 内のすべてのバイトを追加します。 countsrc の長さを超えている場合は、src の長さが count の代わりに使用されます。 結果の文字列は null 文字で終了します。 重なり合う文字列間でコピーした場合の動作は未定義です。

出力値は、ロケールの LC_CTYPE カテゴリ設定の設定によって影響を受けます。 詳細については、setlocaleを参照してください。 _l サフィックスが付いていないバージョンが現在のロケールを使用し、_l サフィックスが付いているバージョンが渡されたロケール パラメーターを代わりに使用する点を除いて、これらの関数のバージョンは同じです。 詳細については、「 Locale」を参照してください。

C++ では、これらの関数の使用がテンプレートのオーバーロードによって簡略化されます。 オーバーロードでは、バッファーの長さを自動的に推論できるため、サイズ引数を指定する必要がなくなります。また、より安全な新しい関数を自動的に使用して、セキュリティが低い古い関数を置き換えることができます。 詳細については、「セキュリティ保護されたテンプレート オーバーロード」を参照してください。

これらの関数のデバッグ ライブラリ バージョンでは、最初にバッファーを 0xFE で埋めます。 この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

汎用テキスト ルーチンのマップ

Tchar.h ルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tcsncat_s strncat_s _mbsnbcat_s wcsncat_s
_tcsncat_s_l _strncat_s_l _mbsnbcat_s_l _wcsncat_s_l

要件

ルーチンによって返される値 必須ヘッダー
_mbsnbcat_s <mbstring.h>
_mbsnbcat_s_l <mbstring.h>

互換性の詳細については、「 Compatibility」を参照してください。

関連項目

文字列操作
_mbsnbcmp, _mbsnbcmp_l
_strncnt_wcsncnt_mbsnbcnt_mbsnbcnt_l_mbsnccnt_mbsnccnt_l
_mbsnbcpy, _mbsnbcpy_l
_mbsnbcpy_s, _mbsnbcpy_s_l
_mbsnbset, _mbsnbset_l
strncat_strncat_lwcsncat_wcsncat_l_mbsncat_mbsncat_l
strncat_s_strncat_s_lwcsncat_s_wcsncat_s_l_mbsncat_s_mbsncat_s_l