_strtime_s _wstrtime_s
複製到緩衝區目前的時間。這些是舊版 _strtime、 _wstrtime 中所述的安全性增強功能與安全性功能,則在 CRT 中。
errno_t _strtime_s(
char *buffer,
size_t numberOfElements
);
errno_t _wstrtime_s(
wchar_t *buffer,
size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
wchar_t (&buffer)[size]
); // C++ only
參數
[out] buffer
緩衝區中,至少 10 個位元組長的時間寫入的位置。[in] numberOfElements
緩衝區的大小。
傳回值
如果成功的話,則為零。
如果發生錯誤狀況,不正確的參數處理常式會叫用,如所述參數驗證。如果失敗,傳回的值會是一個錯誤碼。錯誤代碼被定義在 ERRNO 中。H。 請參閱下表中的這個函式所產生的確切錯誤。如需有關錯誤碼的詳細資訊,請參閱 errno 常數。
錯誤狀況
buffer |
numberOfElements |
Return |
內容buffer |
---|---|---|---|
NULL |
(任何) |
EINVAL |
不能修改 |
不NULL (指向有效的緩衝區) |
0 |
EINVAL |
不能修改 |
不NULL (指向有效的緩衝區) |
0 < 大小 < 9 |
EINVAL |
空字串 |
不NULL (指向有效的緩衝區) |
大小 > 9 |
0 |
格式化為指定 「 備註 」 中的目前時間 |
安全性問題
傳入了無效的非 NULL 值的緩衝區當就會發生存取違規numberOfElements參數大於 9。
將值傳遞numberOfElements ,它大於緩衝區的實際大小會導致緩衝區滿溢的情況。
備註
這些函式會提供更安全版本的_strtime和_wstrtime。_strtime_s函式會將目前的當地時間複製到緩衝區所指timestr*.* 時間格式為hh:mm:ss , hh兩個數字代表在 24 小時制表示法,小時mm是兩個數字,表示分鐘內,和ss是兩個數字,表示秒數。例如,字串18:23:44代表 23 分 44 秒過 6 P.M.緩衝區的大小必須至少 9 個位元組長; 第二個參數所指定的實際大小。
_wstrtime寬字元版本的_strtime。 引數和傳回值的_wstrtime是寬字元字串。這些函式具有相同其他方式作業。
在 C++ 中,使用這些函式已經過簡化的樣板的多載 ; 多載可以自動推斷緩衝區長度 (而不必指定 size 引數),它們可以自動取代較舊的、 不安全的函式與其較新的、 安全的對應項目。如需詳細資訊,請參閱 安全範本多載。
泛用文字常式對應:
TCHAR。H 常式 |
_UNICODE & 未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tstrtime_s |
_strtime_s |
_strtime_s |
_wstrtime_s |
需求
常式 |
所需的標頭 |
---|---|
_strtime_s |
<time.h> |
_wstrtime_s |
<time.h> 或者 <wchar.h> |
其他的相容性資訊,請參閱相容性在簡介中。
範例
// strtime_s.c
#include <time.h>
#include <stdio.h>
int main()
{
char tmpbuf[9];
errno_t err;
// Set time zone from TZ environment variable. If TZ is not set,
// the operating system is queried to obtain the default value
// for the variable.
//
_tzset();
// Display operating system-style date and time.
err = _strtime_s( tmpbuf, 9 );
if (err)
{
printf("_strdate_s failed due to an invalid argument.");
exit(1);
}
printf( "OS time:\t\t\t\t%s\n", tmpbuf );
err = _strdate_s( tmpbuf, 9 );
if (err)
{
printf("_strdate_s failed due to an invalid argument.");
exit(1);
}
printf( "OS date:\t\t\t\t%s\n", tmpbuf );
}
.NET Framework 對等用法
請參閱
參考
ctime_s、 _ctime32_s、 _ctime64_s、 _wctime_s、 _wctime32_s、 _wctime64_s
gmtime_s,_gmtime32_s _gmtime64_s