_strnset_s、 _strnset_s_l、 _wcsnset_s、 _wcsnset_s_l、 _mbsnset_s、 _mbsnset_s_l
初始化字串的字元至指定的字元。這些是 _strnset、 _strnset_l、 _wcsnset、 _wcsnset_l、 _mbsnset、 _mbsnset_l 的安全性增強版本,如 安全性功能,則在 CRT 中 中所述。
重要事項 |
---|
_mbsnset_s 和 _mbsnset_s_l 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。 |
errno_t _strnset_s(
char *str,
size_t numberOfElements,
int c,
size_t count
);
errno_t _strnset_s_l(
char *str,
size_t numberOfElements,
int c,
size_t count,
locale_t locale
);
errno_t _wcsnset_s(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
size_t count
);
errno_t _wcsnset_s_l(
wchar_t *str,
size_t numberOfElements,
wchar_t c,
size_t count,
_locale_t locale
);
errno_t _mbsnset_s(
unsigned char *str,
size_t numberOfElements,
unsigned int c,
size_t count
);
errno_t _mbsnset_s_l(
unsigned char *str,
size_t numberOfElements,
unsigned int c,
size_t count,
_locale_t locale
);
參數
str
要修改的字串。numberOfElements
str 緩衝區的大小。c
字元設定。count
要設定的字元數。locale
使用的地區設定。
傳回值
零,如果成功則為,否則為錯誤碼。
這些函式會驗證其引數。如果 str 不是有效的 NULL 結尾字串或大小引數小於或等於 0,則無效的參數叫用處理常式,如 參數驗證中所述。如果執行允許繼續執行,這些函式會傳回錯誤碼並將 errno 設為該錯誤代碼。如果特定的值並不適用,預設錯誤碼是 EINVAL 。
備註
這些函式設定,最多, str 第一個 count 字元轉換為 c。如果 count 大於 str的大小, str 大小而不是 count。發生錯誤,如果 count 大於 numberOfElements ,而這些參數大於 str的大小。
_wcsnset_s 和 _mbsnset_s都是 _strnset_s寬字元和多位元組字元版本。_wcsnset_s 的字串引數是寬字元字串;該 _mbsnset_s 是多位元組字元字串。這三個函式其餘部分的運作相同。
輸出值受地區設定的 LC_CTYPE類別設定的設定所影響;請參閱 setlocale 以取得詳細資訊。這些函式版本沒有 _l 尾碼此地區設定相關行為使用目前的地區設定;與_l 結尾的版本相同,但使用的地區設定參數。如需詳細資訊,請參閱地區設定。
這些函式的偵錯版本會先填入 0xFD 緩衝區。若要停用此行為,請使用 _CrtSetDebugFillThreshold 。
泛用文字常式對應
TCHAR.H 常式 |
未定義 _UNICODE & _MBCS |
已定義 _MBCS |
已定義 _UNICODE |
---|---|---|---|
_tcsnset_s |
_strnset_s |
_mbsnbset_s |
_wcsnset_s |
_tcsnset_s_l |
_strnset_s_l |
_mbsnbset_s_l |
_wcsnset_s_l |
需求
程序 |
必要的標頭檔 |
---|---|
_strnset_s |
<string.h> |
_strnset_s_l |
<tchar.h> |
_wcsnset_s |
<string.h> 或 <wchar.h> |
_wcsnset_s_l |
<tchar.h> |
_mbsnset_s, _mbsnset_s_l |
<mbstring.h> |
如需其他相容性資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// crt_strnset_s.c
#include <string.h>
#include <stdio.h>
int main( void )
{
char string[15] = "This is a test";
/* Set not more than 4 characters of string to be *'s */
printf( "Before: %s\n", string );
_strnset_s( string, sizeof(string), '*', 4 );
printf( "After: %s\n", string );
}