_strtime_s
, _wstrtime_s
Копирует текущее время в буфер. Эти функции — это версии с улучшениями безопасности, _wstrtime
как описано в функциях безопасности в CRT._strtime
Синтаксис
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
Параметры
buffer
Буфер длиной не менее 10 символов, в который будет записано время.
numberOfElements
Размер буфера.
Возвращаемое значение
Нуль при успешном завершении.
Если возникает ошибка, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Возвращаемое значение — это код ошибки, если произошел сбой. Коды ошибок определены в ERRNO.H; ошибки, создаваемые этой функцией, см. в таблице ниже. Дополнительные сведения о кодах ошибок см. в константахerrno
.
Условия ошибок
buffer |
numberOfElements |
Возврат | Содержимое buffer |
---|---|---|---|
NULL |
(любые) | EINVAL |
Не изменено |
Не NULL (указывает на допустимый буфер) |
0 | EINVAL |
Не изменено |
Не NULL (указывает на допустимый буфер) |
0 < размер < 9 | EINVAL |
Пустая строка |
Не NULL (указывает на допустимый буфер) |
Размер > 9 | 0 | Текущая дата в формате, указанном в разделе "Примечания" |
Проблемы с безопасностью
Передача недопустимогоNULL
значения буфера приведет к нарушению доступа, если numberOfElements
параметр больше 9.
Передача в качестве numberOfElements
значения, превышающего фактический размер буфера, приведет к переполнению буфера.
Замечания
Эти функции представляют собой более безопасные версии _strtime
и _wstrtime
. Функция _strtime_s
копирует текущее локальное время в буфер, на который указывает buffer
. Время форматируется как hh:mm:ss , где hh
два цифры, представляющие час в 24-часовой нотации, mm
— это две цифры, представляющие минуты за час, и ss
это две цифры, представляющие секунды. Например, строка 18:23:44 представляет 23 минуты и 44 секунды после 6 вечера. Буфер должен иметь не менее 9 байтов; Фактический размер указывается вторым параметром.
_wstrtime_s
— это версия с расширенными символами для _strtime_s
; аргумент и возвращаемое значение _wstrtime_s
являются строками с расширенными символами. В остальном эти функции ведут себя одинаково.
В C++ использование данных функций упрощено наличием шаблонных перегрузок; перегруженные методы могут автоматически определять длину буфера (что исключает необходимость указания аргумента с размером буфера), а также они могут автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами. Дополнительные сведения см. в разделе "Безопасные перегрузки шаблонов".
Версии библиотек отладки этих функций сначала заполняют буфер 0xFE. Чтобы отключить это поведение, используйте _CrtSetDebugFillThreshold
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставление подпрограмм универсального текста
Подпрограмма 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 );
}
OS time: 14:37:49
OS date: 04/25/03
См. также
Управление временем
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