_strdate_s, _wstrdate_s
复制当前系统日期到缓冲区。 这些是 _strdate, _wstrdate 的版本与安全增强的 CRT中的安全功能如中所述。
errno_t _strdate_s(
char *buffer,
size_t numberOfElements
);
errno_t _wstrdate_s(
wchar_t *buffer,
size_t numberOfElements
);
template <size_t size>
errno_t _strdate_s(
char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrdate_s(
wchar_t (&buffer)[size]
); // C++ only
参数
[out] buffer
对的格式化的日期字符串将填充的缓冲区的指针。[in] numberOfElements
缓冲区的大小。
返回值
零,如果成功。 ,如果有错误,则返回值是错误代码。 错误代码。 ERRNO.H 定义;对于此功能生成的具体错误参见下表。 有关错误代码的更多信息,请参见 errno。
错误状态
buffer |
numberOfElements |
Return |
buffer内容 |
---|---|---|---|
NULL |
(任何) |
EINVAL |
不修改 |
不是 NULL (指向有效的缓冲区) |
0 |
EINVAL |
不修改 |
不是 NULL (指向有效的缓冲区) |
0 个 AMP_LT numberOfElements AMP_LT 9 |
EINVAL |
空字符串 |
不是 NULL (指向有效的缓冲区) |
numberOfElements AMP_GT= 9 |
0 |
在注释中指定格式的当前日期 |
安全问题
,如果 numberOfElements 参数大于 9. 越大,按缓冲区无效的非 NULL 值会导致访问冲突。
通过比 buffer 的实际大小大范围的值会导致缓冲区溢出。
备注
这些功能提供 _strdate 和 _wstrdate的更安全版本。 _strdate_s 功能复制当前系统日期到缓冲区指向由 buffer,设置的 mm/dd/yy,其中 mm 是表示月份的两位数, dd 是表示日的两个数字,因此, yy 是中的前两个数字。 例如,字符串 12/05/99 表示 1999 年十二月 5 日。 缓冲区长度必须至少为 9 个字符。
_wstrdate_s 是 _strdate_s的宽字符版本;参数和返回 _wstrdate_s 的值是宽字符字符串。 这些功能否则具有相同的行为。
如果 buffer 是 NULL 指针,或者,如果 numberOfElements 少于 9 个字符,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,这些函数返回 -1 并将 errno 到 EINVAL ,如果缓冲区是 NULL ,或者 numberOfElements 小于或等于 0,即设置的 errno 到 ERANGE ,如果 numberOfElements 小于 9。
在 C++ 中,使用这些功能由模板重载简化;重载可推断缓冲区长度 (自动不再需要指定范围参数),并且还可以用以较新,安全重复自动替换旧,不安全的功能。 有关更多信息,请参见 安全模板重载。
一般文本例程映射:
TCHAR.H 实例 |
未定义的 _UNICODE _MBCS |
定义的 _MBCS |
定义的 _UNICODE |
---|---|---|---|
_tstrdate_s |
_strdate_s |
_strdate_s |
_wstrdate_s |
要求
实例 |
必需的头 |
---|---|
_strdate |
time.h |
_wstrdate |
time.h 或 wchar.h |
_strdate_s |
time.h |
示例
为 时间参见示例。
.NET Framework 等效项
请参见
参考
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s