_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l
将字符串的字符与字符。 这些功能的更安全版本可用;请参见 _strset_s, _strset_s_l, _wcsset_s, _wcsset_s_l, _mbsset_s, _mbsset_s_l。
重要
_mbsset 和 _mbsset_l 不能在 Windows 运行时执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
char *_strset(
char *str,
int c
);
char *_strset_l(
char *str,
int c,
locale_t locale
);
wchar_t *_wcsset(
wchar_t *str,
wchar_t c
);
wchar_t *_wcsset_l(
wchar_t *str,
wchar_t c,
locale_t locale
);
unsigned char *_mbsset(
unsigned char *str,
unsigned int c
);
unsigned char *_mbsset_l(
unsigned char *str,
unsigned int c,
_locale_t locale
);
参数
str
要设置的 null 终止的字符串。c
字符集。locale
使用的区域设置。
返回值
返回指向该修改后的字符串。
备注
_strset 函数将所有字符 (不包括终止 null 字符) str 到 c,转换为 char。 _wcsset 和 _mbsset_l 是 _strset的宽字符和多字节字符版本和参数的数据类型和返回值相应地改变。 这些功能否则具有相同的行为。
_mbsset 验证其参数。 如果 str 是 null 指针,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,_mbsset 返回 NULL 并将 errno 到 EINVAL。 _strset 和 _wcsset 不验证方法的参数。
输出值受设置 LC_CTYPE 类设置的影响区域设置;请参见 setlocale, _wsetlocale 有关更多信息。 这些功能的版本相同,不同之处在于,没有 _l 后缀使用当前区域设置和一个位置 _l 后缀使用区域设置参数传递的脚本。 有关更多信息,请参见区域设置。
安全说明 |
---|
这些功能可能容易受到的缓冲区溢出威胁。因为它们可能产生权限的非确保提升,缓冲区溢出可以为系统攻击使用。有关更多信息,请参见 避免缓冲区溢出。 |
一般文本例程映射
TCHAR.H 实例 |
未定义的_UNICODE & _MBCS |
定义的_MBCS |
定义的_UNICODE |
---|---|---|---|
_tcsset |
_strset |
_mbsset |
_wcsset |
_tcsset_l |
_strset_l |
_mbsset_l |
_wcsset_l |
要求
实例 |
必需的标头 |
---|---|
_strset |
<string.h> |
_strset_l |
<tchar.h> |
_wcsset |
<string.h> 或 <wchar.h> |
_wcsset_l |
<tchar.h> |
_mbsset, _mbsset_l |
<mbstring.h> |
有关其他的兼容性信息,请参见 兼容性。
示例
// crt_strset.c
// compile with: /W3
#include <string.h>
#include <stdio.h>
int main( void )
{
char string[] = "Fill the string with something.";
printf( "Before: %s\n", string );
_strset( string, '*' ); // C4996
// Note: _strset is deprecated; consider using _strset_s instead
printf( "After: %s\n", string );
}
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例。
请参见
参考
_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l