_strdate_s, _wstrdate_s

現在のシステム日付をバッファーにコピーします。 これらの関数は、CRT_strdate_wstrdateセキュリティ機能の説明に従ってセキュリティが強化されたバージョンの関数です。

構文

errno_t _strdate_s(
   char *buffer,
   size_t size
);
errno_t _wstrdate_s(
   wchar_t *buffer,
   size_t size
);
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

パラメーター

buffer
書式付きデータの文字列を格納するバッファーへのポインター。

size
バッファーのサイズ (文字単位)。

戻り値

正常終了した場合は 0。 エラーが発生した場合、戻り値はエラー コードです。 エラー コードは ERRNO.H で定義されます。この関数によって生成される正確なエラーについては、下記の表をご覧ください。 エラー コードの詳細については、次を参照してください errno

エラー条件

buffer size Return buffer の内容
NULL (任意) EINVAL Not modified
NULL ではない (有効なバッファーを指す) 0 EINVAL Not modified
NULL ではない (有効なバッファーを指す) 0 <size< 9 EINVAL 空の文字列
NULL ではない (有効なバッファーを指す) size>= 9 0 コメントで指定されている書式設定の、現在の日付

セキュリティ上の問題

無効な NULL 以外の値 bufferを渡すと、パラメーターが 9 より大きい場合 size 、アクセス違反が発生します。

実際のサイズbufferを超える値sizeを渡すと、バッファー オーバーランが発生します。

解説

これらの関数には、セキュリティを強化したバージョンとして _strdate および _wstrdate があります。 この関数は _strdate_s 、現在のシステム日付を指すバッファーに bufferコピーします。 mm/dd/yy という形式になり、mm は 2 桁の月、dd は 2 桁の日、yy は西暦年の下 2 桁です。 たとえば、文字列 12/05/99 は、1999 年 12 月 5 日を表します。 バッファーの長さは 9 文字以上である必要があります。

ワイド文字を扱う場合は、_wstrdate_s ではなく _strdate_s を使用します。_wstrdate_s の場合、引数にはワイド文字列を指定します。また戻り値もワイド文字列です。 それ以外では、これらの関数の動作は同じです。

ポインターsizeまたは NULL 9 文字未満の場合bufferは、無効なパラメーター ハンドラーが呼び出されます。 パラメーターの検証説明されています。 実行の継続が許可された場合、これらの関数では -1 を返します。 バッファーNULLが 0 以下の場合sizeに設定errnoEINVALされます。 または、9 未満の場合sizeERANGE設定errnoします。

C++ では、これらの関数の使用がテンプレートのオーバーロードによって簡略化されます。 オーバーロードはバッファー長を自動的に推論できるため、引数を指定する必要がなくなります size 。 また、セキュリティで保護されていない関数を、より新しいより安全な関数に自動的に置き換えることできます。 詳細については、「セキュリティで保護されたテンプレート オーバーロード」を参照してください

これらの関数のデバッグ ライブラリ バージョンでは、最初にバッファーを 0xFE で埋めます。 この動作を無効にするには、_CrtSetDebugFillThreshold を使用します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチンのマップ

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>

time の例を参照してください。

関連項目

時間管理
asctime_s, _wasctime_s
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
mktime, _mktime32, _mktime64
time, _time32, _time64
_tzset