_strdate_s
, _wstrdate_s
Скопируйте текущую системную дату в буфер. Эти функции — это версии с улучшениями безопасности, _wstrdate
как описано в функциях безопасности в CRT._strdate
Синтаксис
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
Размер буфера в единицах символов.
Возвращаемое значение
Нуль при успешном завершении. Возвращаемое значение — это код ошибки, если произошел сбой. Коды ошибок определены в ERRNO. H; см. в таблице ниже точные ошибки, создаваемые этой функцией. Дополнительные сведения о кодах ошибок см. в статье errno
.
Условия ошибок
buffer |
size |
Возврат | Содержимое buffer |
---|---|---|---|
NULL |
(любые) | EINVAL |
Не изменено |
Не NULL (указывает на допустимый буфер) |
0 | EINVAL |
Не изменено |
Не NULL (указывает на допустимый буфер) |
0<size <9 |
EINVAL |
Пустая строка |
Не NULL (указывает на допустимый буфер) |
size >= 9 |
0 | Текущая дата, отформатированная, как указано в разделе «Примечания» |
Проблемы с безопасностью
Если вы передаете недопустимое значение buffer
, отличное от NULL, оно приводит к нарушению доступа, если size
параметр больше девяти.
Передача значения больше size
фактического размера результатов в переполнении буфера buffer
.
Замечания
Эти функции представляют собой более безопасные версии _strdate
и _wstrdate
. Функция _strdate_s
копирует текущую системную дату в буфер, на который указывает buffer
. Он форматирован, где mm
является двухзначный месяц, dd
является двухзначным mm/dd/yy
днем и yy
является последними двумя цифрами года. Например, строка 12/05/99
представляет 5 декабря 1999 г. Буфер должен иметь по крайней мере девять символов.
_wstrdate_s
— это версия с расширенными символами для _strdate_s
; аргумент и возвращаемое значение _wstrdate_s
являются строками с расширенными символами. В остальном эти функции ведут себя одинаково.
Если buffer
указатель NULL
или size
меньше девяти символов, вызывается обработчик недопустимых параметров. Он описан в разделе "Проверка параметров". Если выполнение разрешено продолжать, эти функции возвращают значение -1. Они задают errno
значение EINVAL
, если буфер равен NULL
size
0 или меньше или равен 0. Или, если errno
ERANGE
size
значение меньше 9.
В 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
_wctime_s
_ctime64_s
_wctime32_s
,_wctime64_s
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime_s
, , _localtime32_s
_localtime64_s
mktime
, , _mktime32
_mktime64
time
, , _time32
_time64
_tzset