_mbsnbset、_mbsnbset_l
設定多位元組字元字串的第一個 n 位元組至指定的字元。 更多這些函式的可用安全版本,請參閱 _mbsnbset_s、_mbsnbset_s_l。
重要
這個應用程式開發介面不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式。
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
);
參數
str
待變更字串。c
單一位元組或多位元組字元設定。count
要設定的位元組數。locale
要使用的地區設定。
傳回值
_mbsnbset 傳回變更後字串的指標。
備註
_mbsnbset 和 _mbsnbset_l 函式最多將第一個 count 位元組 str 設為 c。 如果 count 大於 str 的長度,長度為 str 而非 count 的。 如果 c 是多位元組字元,且無法完全設定成 count指定的最後一個位元組,最後一個位元組會填補一個空白字元。 _mbsnbset 和 _mbsnbset_l不會將 NULL 放在 str的結尾。
_mbsnbset 和 _mbsnbset_l與 _mbsnset 類似,不過,它設定 count 位元組而不是 c 的 count 字元。
如果 str 是 NULL 或 count 為零,這個函式會產生如 參數驗證 中所述的無效參數例外狀況。 如果允許繼續執行,errno 會設定為 EINVAL 且函式會傳回 NULL。 此外,如果 c 不是有效的多位元組字元, errno 會設定為 EINVAL ,並使用空格。
輸出值受地區設定的LC_CTYPE 分類設定所影響。如需詳細資訊,請參閱 setlocale 。 這些函式的 _mbsnbset 版本使用地區設定相關的行為的目前地區設定;_mbsnbset_l 版本是一樣的,只不過它使用的是傳入的地區設定而不是目前的地區設定。 如需詳細資訊,請參閱地區設定。
安全性提示 這個應用程式開發介面會導致緩衝區滿溢問題而有潛在的威脅。 緩衝區溢位問題是系統攻擊的常見方法,它會導致權限不確定性的增加。 如需詳細資訊,請參閱 Avoiding Buffer Overruns 。
一般文字常式對應
Tchar.h 常式 |
未定義 _UNICODE and _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tcsnset |
_strnset |
_mbsnbset |
_wcsnset |
_tcsnset_l |
_strnset_l |
_mbsnbset_l |
_wcsnset_l |
需求
常式 |
必要的標頭 |
---|---|
_mbsnbset |
<mbstring.h> |
_mbsnbset_l |
<mbstring.h> |
如需相容性的詳細資訊,請參閱相容性。
範例
// 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
.NET Framework 對等用法
不適用。若要呼叫標準 C 函式,請使用 PInvoke。如需詳細資訊,請參閱平台叫用範例。