共用方式為


_mbsnbset_s、_mbsnbset_s_l

設定多位元組字元字串的第一個 n 位元組至指定的字元。 這些 _mbsnbset、_mbsnbset_l 版本有安全性增強功能,如 CRT 中的安全性功能中所述。

重要

這個應用程式開發介面不能用於 Windows 執行階段 中執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式

errno_t _mbsnbset_s(
   unsigned char *str,
   size_t size,
   unsigned int c,
   size_t count 
);
errno_t _mbsnbset_s_l(
   unsigned char *str,
   size_t size,
   unsigned int c,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t _mbsnbset_s(
   unsigned char (&str)[size],
   unsigned int c,
   size_t count 
); // C++ only
template <size_t size>
errno_t _mbsnbset_s_l(
   unsigned char (&str)[size],
   unsigned int c,
   size_t count,
   _locale_t locale
); // C++ only

參數

  • str
    待變更字串。

  • size
    字串緩衝區的大小。

  • c
    單一位元組或多位元組字元設定。

  • count
    要設定的位元組數。

  • locale
    要使用的地區設定。

傳回值

如果成功為零,否則為錯誤碼。

備註

_mbsnbset_s 和 _mbsnbset_s_l 函式最多將第一個 count 位元組 str 設為 c。 如果 count 大於 str 的長度,長度為 str 而非 count 的。 如果 c 是多位元組字元,且無法完全設定成 count指定的最後一個位元組,最後一個位元組會填補一個空白字元。 _mbsnbset_s 和 _mbsnbset_s_l不會將終止 NULL 放在 str的結尾。

_mbsnbset_s 和 _mbsnbset_s_l 類別與 _mbsnset類似,不過,它們設定 count 位元組而不是 ccount 字元。

如果 str 是 NULL 或 count 為零,這個函式會產生如 參數驗證 中所述的無效參數例外狀況。 如果允許繼續執行,errno 會設定為 EINVAL 且函式會傳回 NULL。 此外,如果 c 不是有效的多位元組字元, errno 會設定為 EINVAL ,並使用空格。

輸出值會受到地區設定的 LC_CTYPE 類別設定影響。如需詳細資訊,請參閱 setlocale、_wsetlocale。 這些函式的 _mbsnbset_s 版本使用地區設定相關的行為的目前地區設定;_mbsnbset_s_l 版本是一樣的,只不過它使用的是傳入的地區設定而不是目前的地區設定。 如需詳細資訊,請參閱地區設定

在 C++ 中,這些函式的使用被簡化為使用樣板多載;使用多載可以自動推斷緩衝區的大小而不必在參數中指明大小。 如需詳細資訊,請參閱安全範本多載

這些函式的偵錯版本會先用 0xFD 填入緩衝區。 若要停用此行為,請使用 _CrtSetDebugFillThreshold

一般文字常式對應

Tchar.h 常式

未定義 _UNICODE and _MBCS

_MBCS 已定義

_UNICODE 已定義

_tcsnset_s

_strnset_s

_mbsnbset_s

_wcsnset_s

_tcsnset_s_l

_strnset_s _l

_mbsnbset_s_l

_wcsnset_s_l

需求

常式

必要的標頭

_mbsnbset_s

<mbstring.h>

_mbsnbset_s_l

<mbstring.h>

如需詳細的相容性資訊,請參閱相容性

範例

// crt_mbsnbset_s.c
#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_s( string, sizeof(string), '*', 4 );
   printf( "After:  %s\n", string );
}

Output

  

.NET Framework 對等用法

不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例

請參閱

參考

字串操作 (CRT)

_mbsnbcat、_mbsnbcat_l

_strnset、_strnset_l、_wcsnset、_wcsnset_l、_mbsnset、_mbsnset_l

_strset、_strset_l、_wcsset、_wcsset_l、_mbsset、_mbsset_l