Sdílet prostřednictvím


_strtime_s, _wstrtime_s

Zkopírujte aktuální čas do vyrovnávací paměti. Tyto funkce jsou verze _strtime, _wstrtime s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

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
Vyrovnávací paměť, nejméně 10 bajtů dlouhá, kde se čas zapíše.

numberOfElements
Velikost vyrovnávací paměti.

Vrácená hodnota

Nula v případě úspěchu.

Pokud dojde k chybovému stavu, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Vrácená hodnota je kód chyby, pokud dojde k selhání. Kódychybch H; Přesné chyby vygenerované touto funkcí najdete v následující tabulce. Další informace o kódech chyb najdete v tématu errno konstanty.

Chybové podmínky

buffer numberOfElements Vrácení Obsah buffer
NULL (jakýkoli) EINVAL Neupraveno
Ne NULL (odkazování na platnou vyrovnávací paměť) 0 EINVAL Neupraveno
Ne NULL (odkazování na platnou vyrovnávací paměť) 0 < velikost < 9 EINVAL Prázdný řetězec
Ne NULL (odkazování na platnou vyrovnávací paměť) Velikost > 9 0 Aktuální čas formátovaný podle poznámek

Problémy se zabezpečením

Předání neplatné hodnoty proNULL vyrovnávací paměť způsobí porušení přístupu, pokud numberOfElements je parametr větší než 9.

Předání hodnoty větší numberOfElements než skutečná velikost vyrovnávací paměti způsobí přetečení vyrovnávací paměti.

Poznámky

Tyto funkce poskytují bezpečnější verze _strtime a _wstrtime. Funkce _strtime_s zkopíruje aktuální místní čas do vyrovnávací paměti, na kterou bufferodkazuje . Čas je formátován jako hh:mm:ss , kde hh jsou dvě číslice představující hodinu v zápisu za 24 hodin, mm jsou dvě číslice představující minuty za hodinu a ss představuje dvě číslice představující sekundy. Například řetězec 18:23:44 představuje 23 minut a 44 sekund po 6:00. Vyrovnávací paměť musí mít délku nejméně 9 bajtů; skutečná velikost je určena druhým parametrem.

_wstrtime_s je verze širokého znaku _strtime_s; argument a návratová _wstrtime_s hodnota jsou řetězce širokých znaků. Tyto funkce se chovají stejně jinak.

V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou automaticky odvodit délku vyrovnávací paměti (eliminuje potřebu zadat argument velikosti) a mohou automaticky nahradit starší, nezabezpečené funkce jejich novějšími zabezpečenými protějšky. Další informace naleznete v tématu Přetížení šablon zabezpečení.

Verze knihovny ladění těchto funkcí nejprve vyplní vyrovnávací paměť 0xFE. Chcete-li toto chování zakázat, použijte _CrtSetDebugFillThreshold.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Rutina TCHAR.H _UNICODE a _MBCS není definován _MBCS Definovány _UNICODE Definovány
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

Požadavky

Rutina Požadovaný hlavičkový soubor
_strtime_s <time.h>
_wstrtime_s <time.h> nebo <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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

Viz také

Správa času
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