次の方法で共有


_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 コメントで指定されている書式設定の、現在の日付

セキュリティ上の問題

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

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 の場合、引数にはワイド文字列を指定します。また戻り値もワイド文字列です。 それ以外では、これらの関数の動作は同じです。

bufferNULL ポインターであるか、sizeが 9 文字未満の場合、無効なパラメーター ハンドラーが呼び出されます。 詳細については、 パラメーターの検証を参照してください。 実行の継続が許可された場合、これらの関数では -1 を返します。 バッファーがNULLの場合、またはsizeが 0 以下の場合は、errnoEINVALに設定します。 または、sizeが 9 未満の場合、errnoERANGE に設定します。

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