CRT 函数的安全增强版本

可提供更安全版本的运行时库例程。 有关 CRT 中的安全改进的详细信息,请参阅 CRT 中的安全功能

安全函数

CRT 函数 安全性增强的函数 使用
_access、_waccess _access_s、_waccess_s 确定文件访问权限
_alloca _malloca 在堆栈上分配内存
asctime、_wasctime asctime_s、_wasctime_s struct tm 类型到字符串的转换时间
bsearch bsearch_s 执行排序数组的二进制搜索
已过时的函数 _cgets_s、_cgetws_s 从控制台获取一个字符串
_chsize _chsize_s 更改文件的大小
clearerr clearerr_s 重置流的错误指示器
_control87、_controlfp、__control87_2 _controlfp_s 获取和设置浮点控制字
_cprintf、_cprintf_l、_cwprintf、_cwprintf_l _cprintf_s、_cprintf_s_l、_cwprintf_s、_cwprintf_s_l 格式化并打印到控制台
_cscanf、_cscanf_l、_cwscanf、_cwscanf_l _cscanf_s、_cscanf_s_l、_cwscanf_s、_cwscanf_s_l 从控制台读取格式化的数据
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64 _ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_s time_t__time32_t__time64_t 类型到字符串的转换时间
_ecvt _ecvt_s double 数字转换为字符串
_fcvt _fcvt_s 将浮点数转换为字符串
fopen、_wfopen_wfopen fopen_s、_wfopen_s 打开文件
fprintf、_fprintf_l、fwprintf、_fwprintf_l fprintf_s、_fprintf_s_l、fwprintf_s、_fwprintf_s_l 将格式化数据输出到流
fread fread_s 从文件中读取
_fread_nolock _fread_nolock_s 从文件中读取,同时无需使用多线程写入锁定
freopen、_wfreopen freopen_s、_wfreopen_s 重新打开文件
fscanf、_fscanf_l、fwscanf、_fwscanf_l fscanf_s、_fscanf_s_l、fwscanf_s、_fwscanf_s_l 从流中读取带格式的数据
_ftime, _ftime32, _ftime64 _ftime_s、_ftime32_s、_ftime64_s 获取当前时间
_gcvt _gcvt_s 将浮点值转换为字符串,并将其存储在缓冲区中
getenv、_wgetenv getenv_s、_wgetenv_s 从当前环境中获取值。
已过时的函数 gets_s、_getws_s stdin 流中获取行
gmtime、_gmtime32、_gmtime64 _gmtime32_s、_gmtime64_s 将时间从类型 time_t 转换为 struct tm 或从类型 __time64_t 转换为 struct tm
_itoa、_i64toa、_ui64toa、_itow、_i64tow、_ui64tow _itoa_s、_i64toa_s、_ui64toa_s、_itow_s、_i64tow_s、_ui64tow_s 将整数转换为字符串
_lfind _lfind_s 执行指定键的线性搜索
localtime、_localtime32、_localtime64 localtime_s、_localtime32_s、_localtime64_s 使用本地更正将时间从类型 time_t 转换为 struct tm 或从类型 __time64_t 转换为 struct tm
_lsearch _lsearch_s 执行值的线性搜索;如果未找到,则添加到列表的末尾
_ltoa、_ltow _ltoa_s、_ltow_s 将长整数转换为字符串
_makepath、_wmakepath _makepath_s、_wmakepath_s 从组件创建路径名
_mbccpy、_mbccpy_l _mbccpy_s、_mbccpy_s_l 将多字节字符从一个字符串复制到另一个字符串
_mbsnbcat、_mbsnbcat_l _mbsnbcat_s、_mbsnbcat_s_l 最多将一个多字节字符字符串的第一个 n 字节追加到另一个字符串
_mbsnbcpy、_mbsnbcpy_l _mbsnbcpy_s、_mbsnbcpy_s_l 将字符串的 n 字节复制到目标字符串
_mbsnbset、_mbsnbset_l _mbsnbset_s、_mbsnbset_s_l 将字符串的第一个 n 字节设置为指定字符
mbsrtowcs mbsrtowcs_s 将多字节字符字符串转换为对应的宽字符字符串
mbstowcs、_mbstowcs_l mbstowcs_s、_mbstowcs_s_l 将多字节字符序列转换为对应的宽字符序列
memcpy、wmemcpy memcpy_s、wmemcpy_s 在缓冲区之间进行字符复制操作
memmove、wmemmove memmove_s、wmemmove_s 从一个缓冲区移动到另一个缓冲区
_mktemp、_wmktemp _mktemp_s、_wmktemp_s 创建唯一文件名
printf、_printf_l、wprintf、_wprintf_l printf_s、_printf_s_l、wprintf_s、_wprintf_s_l 将格式化输出打印至标准输出流
_putenv、_wputenv _putenv_s、_wputenv_s 创建,修改或移除环境变量
qsort qsort_s 执行快速排序
rand rand_s 生成伪随机数
scanf、_scanf_l、wscanf、_wscanf_l scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l 从标准输入流中读取格式化数据
_searchenv、_wsearchenv _searchenv_s、_wsearchenv_s 使用环境路径搜索文件
snprintf、_snprintf、_snprintf_l、_snwprintf、_snwprintf_l _snprintf_s、_snprintf_s_l、_snwprintf_s、_snwprintf_s_l 将设置格式的数据写入字符串
_snscanf、_snscanf_l、_snwscanf、_snwscanf_l _snscanf_s、_snscanf_s_l、_snwscanf_s、_snwscanf_s_l 从字符串中读取指定长度的格式化数据。
_sopen、_wsopen _sopen_s、_wsopen_s 打开文件以供共享
_splitpath、_wsplitpath _splitpath_s、_wsplitpath_s 将路径名称分解成组件
sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l sprintf_s、_sprintf_s_l、swprintf_s、_swprintf_s_l 将设置格式的数据写入字符串
sscanf、_sscanf_l、swscanf、_swscanf_l sscanf_s、_sscanf_s_l、swscanf_s、_swscanf_s_l 从字符串中读取格式化数据
strcat、wcscat、_mbscat strcat_s、wcscat_s、_mbscat_s 追加字符串
strcpy、wcscpy、_mbscpy strcpy_s、wcscpy_s、_mbscpy_s 复制字符串
_strdate、_wstrdate _strdate_s、_wstrdate_s 以字符串形式返回当前系统日期
strerror、_strerror、_wcserror、__wcserror strerror_s、_strerror_s、_wcserror_s、__wcserror_s 获取系统错误信息(strerror_wcserror)或打印用户提供的错误消息(_strerror__wcserror
_strlwr、_wcslwr、_mbslwr、_strlwr_l、_wcslwr_l、_mbslwr_l _strlwr_s、_strlwr_s_l、_mbslwr_s、_mbslwr_s_l、_wcslwr_s、_wcslwr_s_l 将字符串转换为小写字母
strncat、_strncat_l、wcsncat、_wcsncat_l、_mbsncat、_mbsncat_l strncat_s、_strncat_s_l、wcsncat_s、_wcsncat_s_l、_mbsncat_s、_mbsncat_s_l 向字符串追加字符
strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l 将一个字符串的字符复制到另一个字符串
_strnset、_strnset_l、_wcsnset、_wcsnset_l、_mbsnset、_mbsnset_l _strnset_s、_strnset_s_l、_wcsnset_s、_wcsnset_s_l、_mbsnset_s、_mbsnset_s_l 将字符串的第一个 n 字符设置为指定字符
_strset、_strset_l、_wcsset、_wcsset_l、_mbsset、_mbsset_l _strset_s、_strset_s_l、_wcsset_s、_wcsset_s_l、_mbsset_s、_mbsset_s_l 将字符串的所有字符都设置为指定字符
_strtime、_wstrtime _strtime_s、_wstrtime_s 以字符串形式返回当前系统时间
strtok、_strtok_l、wcstok、_wcstok_l、_mbstok、_mbstok_l strtok_s、_strtok_s_l、wcstok_s、_wcstok_s_l、_mbstok_s、_mbstok_s_l 通过使用当前区域设置或通过的区域设置,查找在字符串中的下一个标记
_strupr、_strupr_l、_mbsupr、_mbsupr_l、_wcsupr_l、_wcsupr _strupr_s、_strupr_s_l、_mbsupr_s、_mbsupr_s_l、_wcsupr_s、_wcsupr_s_l 将字符串转换为大写字母
tmpfile tmpfile_s 创建临时文件
_tempnam、_wtempnam、tmpnam、_wtmpnam tmpnam_s、_wtmpnam_s 生成可用于创建临时文件的名称
_ultoa、_ultow _ultoa_s、_ultow_s 将无符号长整数转换为字符串
_umask _umask_s 设置默认的文件权限掩码
_vcprintf、_vcprintf_l、_vcwprintf、_vcwprintf_l _vcprintf_s、_vcprintf_s_l、_vcwprintf_s、_vcwprintf_s_l 使用指向参数列表的指针编写格式化输出到控制台
vfprintf、_vfprintf_l、vfwprintf、_vfwprintf_l vfprintf_s、_vfprintf_s_l、vfwprintf_s、_vfwprintf_s_l 编写使用指针参数列表的格式化输出
vfscanf、vfwscanf vfscanf_s、vfwscanf_s 从流中读取带格式的数据
vprintf、_vprintf_l、vwprintf、_vwprintf_l vprintf_s、_vprintf_s_l、vwprintf_s、_vwprintf_s_l 编写使用指针参数列表的格式化输出
vscanf、vwscanf vscanf_s、vwscanf_s 从标准输入流中读取格式化数据
vsnprintf、_vsnprintf、_vsnprintf_l、_vsnwprintf、_vsnwprintf_l vsnprintf_s、_vsnprintf_s、_vsnprintf_s_l、_vsnwprintf_s、_vsnwprintf_s_l 编写使用指针参数列表的格式化输出
vsprintf、_vsprintf_l、vswprintf、_vswprintf_l、__vswprintf_l vsprintf_s、_vsprintf_s_l、vswprintf_s、_vswprintf_s_l 编写使用指针参数列表的格式化输出
vsscanf、vswscanf vsscanf_s、vswscanf_s 从字符串中读取格式化数据
wcrtomb wcrtomb_s 将宽字符转换为多字节字符表示形式
wcsrtombs wcsrtombs_s 将宽字符字符串转换为多字节字符串表示形式
wcstombs、_wcstombs_l wcstombs_s、_wcstombs_s_l 将宽字符序列转换为对应的多字节字符序列
wctomb、_wctomb_l wctomb_s、_wctomb_s_l 将宽字符转换为对应的多字节字符

另请参阅

CRT 库功能