_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
Параметры
[исходящий] buffer
Буфер, по крайней мере 10 байтов длиной, где будет записано время.[входящий] numberOfElements
Размер буфера.
Возвращаемое значение
Ноль, если успешно.
Если возникает ошибочное условие, то вызывается обработчик недопустимого параметра, как описано в Проверка параметров. Возвращаемое значение — код ошибки в случае сбоя. Коды ошибок определенны в ERRNO.H; см. следующую таблицу для конкретных ошибок, создаваемых этой функцией. Дополнительные сведения о кодах ошибок см. в разделе Константы errno.
Условия возникновения ошибки
buffer |
numberOfElements |
Return |
Содержимое buffer. |
---|---|---|---|
NULL |
(any) |
EINVAL |
Без изменений |
Не NULL (указывающий на допустимый буфер) |
0 |
EINVAL |
Без изменений |
Не NULL (указывающий на допустимый буфер) |
0 < size < 9 |
EINVAL |
Пустая строка |
Не NULL (указывающий на допустимый буфер) |
Size > 9 |
0 |
Текущее время, отформатированное в соответствии с замечаниями |
Проблемы безопасности
Передача недопустимого, отличного от NULL значения для буфера приведет к нарушению прав доступа, если параметр numberOfElements больше 9.
Передача для numberOfElements значения, превышающего фактический размер буфера, может привести к переполнению буфера.
Заметки
Эти функции предоставляют более безопасные версии _strtime и _wstrtime. Функция _strtime_s копирует текущее местное время в буфер, указанный в timestr*.* Время форматируется как hh:mm:ss, где hh является двумя цифрами, представляющими час в 24-часовой записи, mm является двумя цифрами, представляющими минуты, прошедшие с последнего часа, и ss является двумя цифрами, представляющими секунды. Например, строка 18:23:44 представляет 23 минуты и 44 секунды, прошедших с 18 часов. Буфер должен быть длиной, по крайней мере, 9 байт; фактический размер указывается в качестве второго параметра.
_wstrtime — это двухбайтовая версия функции _strtime; аргумент и возвращаемое значение _wstrtime являются строками двухбайтовых символов. В остальном эти функции ведут себя идентично.
В C++ использование данных функций упрощено наличием шаблонных перегрузок; перегруженные методы могут автоматически определять длину буфера (что исключает необходимость указания аргумента с размером буфера), а также они могут автоматически заменять более старые, незащищенные функции их новыми безопасными аналогами. Дополнительные сведения см. в разделе Безопасные перегрузки шаблонов.
Универсальное текстовое сопоставление функций:
Подпрограмма 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