_mbsnbset、_mbsnbset_l_mbsnbset, _mbsnbset_l

マルチバイト文字列の最初のnバイトを、指定した文字に設定します。Sets the first n bytes of a multibyte-character string to a specified character. これらの関数にはセキュリティを強化したバージョンがあります。「_mbsnbset_s、_mbsnbset_s_l」を参照してください。More secure versions of these functions are available; see _mbsnbset_s, _mbsnbset_s_l.

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。This API 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

unsigned char *_mbsnbset(
   unsigned char *str,
   unsigned int c,
   size_t count
);
unsigned char *_mbsnbset_l(
   unsigned char *str,
   unsigned int c,
   size_t count,
   _locale_t locale
);

パラメーターParameters

引数str
変更対象の文字列。String to be altered.

40u-cc
1 バイトまたはマルチバイト文字の設定。Single-byte or multibyte-character setting.

countcount
設定対象のバイト数。Number of bytes to be set.

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

戻り値Return Value

_mbsnbsetは、変更された文字列へのポインターを返します。_mbsnbset returns a pointer to the altered string.

解説Remarks

_Mbsnbset関数と _mbsnbset_l関数は、最大でstrの最初のcountバイトをcに設定します。The _mbsnbset and _mbsnbset_l functions set, at most, the first count bytes of str to c. Countstrの長さよりも大きい場合、 countの代わりにstrの長さが使用されます。If count is greater than the length of str, the length of str is used instead of count. Cがマルチバイト文字で、 countで指定された最後のバイトに完全に設定できない場合、最後のバイトは空白文字で埋められます。If c is a multibyte character and cannot be set entirely into the last byte specified by count, the last byte is padded with a blank character. _mbsnbset_mbsnbset_lでは、 strの最後に終端の null が配置されません。_mbsnbset and _mbsnbset_l does not place a terminating null at the end of str.

_mbsnbset_mbsnbset_l_mbsnsetに似ています、count の文字数ではなくカウントバイトを設定する点が異なります。_mbsnbset and _mbsnbset_l is similar to _mbsnset, except that it sets count bytes rather than count characters of c.

StrNULLまたはcountが0の場合、この関数は「パラメーターの検証」で説明されているように、無効なパラメーター例外を生成します。If str is NULL or count is zero, this function generates an invalid parameter exception as described in Parameter Validation. 実行の継続が許可された場合、 errnoEINVALに設定され、関数はNULLを返します。If execution is allowed to continue, errno is set to EINVAL and the function returns NULL. また、 cが有効なマルチバイト文字でない場合は、 errnoEINVALに設定され、代わりにスペースが使用されます。Also, if c is not a valid multibyte character, errno is set to EINVAL and a space is used instead.

出力値は、ロケールの LC_CTYPE カテゴリの設定に影響されます。詳細については、「setlocale」を参照してください。The output value is affected by the setting of the LC_CTYPE category setting of the locale; see setlocale for more information. この関数の _mbsnbsetバージョンは、このロケールに依存する動作に現在のロケールを使用します。_mbsnbset_lのバージョンは、渡されたロケールパラメーターを代わりに使用する点を除いて同じです。The _mbsnbset version of this function uses the current locale for this locale-dependent behavior; the _mbsnbset_l version is identical except that it use the locale parameter passed in instead. 詳細については、「 Locale」を参照してください。For more information, see Locale.

セキュリティに関するメモ この API は、バッファー オーバーランが原因で発生する潜在的な脅威の影響を受けます。Security Note This API incurs a potential threat brought about by a buffer overrun problem. バッファー オーバーランは、システムを攻撃するときによく使用される方法であり、その結果、認められていない権限が昇格されます。Buffer overrun problems are a frequent method of system attack, resulting in an unwarranted elevation of privilege. 詳しくは、「 バッファー オーバーランの回避」をご覧ください。For more information, see Avoiding Buffer Overruns.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

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

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_tcsnset_tcsnset _strnset_strnset _mbsnbset_mbsnbset _wcsnset_wcsnset
_tcsnset_l_tcsnset_l _strnset_l_strnset_l _mbsnbset_l_mbsnbset_l _wcsnset_l_wcsnset_l

必要条件Requirements

ルーチンRoutine 必須ヘッダーRequired header
_mbsnbset_mbsnbset <mbstring.h><mbstring.h>
_mbsnbset_l_mbsnbset_l <mbstring.h><mbstring.h>

互換性について詳しくは、「 Compatibility」をご覧ください。For more compatibility information, see Compatibility.

Example

// crt_mbsnbset.c
// compile with: /W3
#include <mbstring.h>
#include <stdio.h>

int main( void )
{
   char string[15] = "This is a test";
   /* Set not more than 4 bytes of string to be *'s */
   printf( "Before: %s\n", string );
   _mbsnbset( string, '*', 4 ); // C4996
   // Note; _mbsnbset is deprecated; consider _mbsnbset_s
   printf( "After:  %s\n", string );
}

出力Output

Before: This is a test
After:  **** is a test

関連項目See also

文字列操作String Manipulation
_mbsnbcat、_mbsnbcat_l_mbsnbcat, _mbsnbcat_l
_strnset、_strnset_l、_wcsnset、_wcsnset_l、_mbsnset、_mbsnset_l_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l
_strset、_strset_l、_wcsset、_wcsset_l、_mbsset、_mbsset_l_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l