_strtime_s
, _wstrtime_s
Skopiuj bieżący czas do buforu. Te funkcje to wersje programu _strtime
_wstrtime
z ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
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
Parametry
buffer
Bufor o długości co najmniej 10 bajtów, w którym zostanie zapisany czas.
numberOfElements
Rozmiar buforu.
Wartość zwracana
Zero, jeśli się powiedzie.
Jeśli wystąpi warunek błędu, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Wartość zwracana jest kodem błędu, jeśli wystąpi błąd. Kody błędów są zdefiniowane w błędzie ERRNO. H; Zobacz poniższą tabelę, aby zapoznać się z dokładnymi błędami wygenerowanymi przez tę funkcję. Aby uzyskać więcej informacji na temat kodów błędów, zobacz errno
stałe.
Warunki błędu
buffer |
numberOfElements |
Powrót | Zawartość buffer |
---|---|---|---|
NULL |
(dowolny) | EINVAL |
Nie zmodyfikowano |
Nie NULL (wskazując prawidłowy bufor) |
0 | EINVAL |
Nie zmodyfikowano |
Nie NULL (wskazując prawidłowy bufor) |
0 < rozmiar < 9 | EINVAL |
Pusty ciąg |
Nie NULL (wskazując prawidłowy bufor) |
Rozmiar > 9 | 0 | Bieżący czas sformatowany zgodnie z określoną w uwagach |
Problemy z zabezpieczeniami
Przekazanie nieprawidłowejNULL
wartości innej niż bufor spowoduje naruszenie dostępu, jeśli numberOfElements
parametr jest większy niż 9.
Przekazanie wartości dla numberOfElements
tej wartości jest większe niż rzeczywisty rozmiar buforu spowoduje przekroczenie buforu.
Uwagi
Te funkcje zapewniają bezpieczniejsze wersje elementów _strtime
i _wstrtime
. Funkcja _strtime_s
kopiuje bieżący czas lokalny do buforu wskazywane przez buffer
. Czas jest sformatowany jako hh:mm:ss , gdzie hh
to dwie cyfry reprezentujące godzinę w notacji 24-godzinnej, mm
to dwie cyfry reprezentujące minuty ostatnie godziny i ss
jest dwiema cyframi reprezentującymi sekundy. Na przykład ciąg 18:23:44 reprezentuje 23 minuty i 44 sekundy po godzinie 18:00. Bufor musi mieć długość co najmniej 9 bajtów; rzeczywisty rozmiar jest określony przez drugi parametr.
_wstrtime_s
jest wersją szerokoznakową ; _strtime_s
argument i wartość zwracana _wstrtime_s
są ciągami o szerokim znaku. Te funkcje zachowują się identycznie inaczej.
W języku C++używanie tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wnioskować długość buforu (eliminując konieczność określenia argumentu rozmiaru) i mogą automatycznie zastępować starsze, niezabezpieczone funkcje nowszymi, bezpiecznymi odpowiednikami. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Wersje biblioteki debugowania tych funkcji najpierw wypełniają bufor 0xFE. Aby wyłączyć to zachowanie, użyj polecenia _CrtSetDebugFillThreshold
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowanie rutynowego tekstu ogólnego
Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tstrtime_s |
_strtime_s |
_strtime_s |
_wstrtime_s |
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_strtime_s |
<time.h> |
_wstrtime_s |
<time.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Zarządzanie czasem
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