Udostępnij za pośrednictwem


_strtime_s, _wstrtime_s

Skopiuj bieżący czas do buforu. Te funkcje to wersje programu _strtime _wstrtimez 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_sargument 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