Sdílet prostřednictvím


_strdate_s, _wstrdate_s

Zkopírujte aktuální systémové datum do vyrovnávací paměti. Tyto funkce jsou verze _strdate, _wstrdate s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

errno_t _strdate_s(
   char *buffer,
   size_t size
);
errno_t _wstrdate_s(
   wchar_t *buffer,
   size_t size
);
template <size_t size>
errno_t _strdate_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrdate_s(
   wchar_t (&buffer)[size]
); // C++ only

Parametry

buffer
Ukazatel na vyrovnávací paměť pro vložení formátovaného řetězce kalendářního data.

size
Velikost vyrovnávací paměti v jednotkách znaků.

Vrácená hodnota

Nula v případě úspěchu. 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 naleznete v tématu errno.

Chybové podmínky

buffer size 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 <size< 9 EINVAL Prázdný řetězec
Ne NULL (odkazování na platnou vyrovnávací paměť) size>= 9 0 Aktuální datum formátované podle poznámek

Problémy se zabezpečením

Pokud předáte neplatnou hodnotu non-NULL pro buffer, výsledkem je porušení přístupu, pokud size je parametr větší než devět.

Předání hodnoty větší size než skutečná velikost buffer výsledků přetečení vyrovnávací paměti.

Poznámky

Tyto funkce poskytují bezpečnější verze _strdate a _wstrdate. Funkce _strdate_s zkopíruje aktuální systémové datum do vyrovnávací paměti, na kterou bufferodkazuje . Je formátovaný mm/dd/yy, kde mm je dvouciferný měsíc, dd je dvouciferný den a yy je poslední dvě číslice v roce. Například řetězec 12/05/99 představuje 5. prosince 1999. Vyrovnávací paměť musí mít alespoň devět znaků.

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

Pokud buffer je NULL ukazatel nebo size je menší než devět znaků, vyvolá se neplatná obslužná rutina parametru. Popisuje se v ověření parametru. Pokud je provádění povoleno pokračovat, vrátí tyto funkce hodnotu -1. errno Nastaví, EINVAL jestli je NULL vyrovnávací paměť menší size nebo rovna 0. Nebo nastaví errnoERANGE , jestli size je menší než 9.

V jazyce C++ je použití těchto funkcí zjednodušené přetíženími šablony. Přetížení mohou odvodit délku vyrovnávací paměti automaticky, což eliminuje potřebu zadat size argument. A můžou automaticky nahradit nezabezpečenější funkce novějšími a bezpečnější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
_tstrdate_s _strdate_s _strdate_s _wstrdate_s

Požadavky

Rutina Požadovaný hlavičkový soubor
_strdate <time.h>
_wstrdate <time.h> nebo <wchar.h>
_strdate_s <time.h>

Příklad

Podívejte se na příklad pro time.

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