Dela via


_strdate_s, _wstrdate_s

Kopiera det aktuella systemdatumet till en buffert. Dessa funktioner är versioner av _strdate, _wstrdate med säkerhetsförbättringar enligt beskrivningen i Säkerhetsfunktioner i CRT.

Syntax

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

Parameterar

buffer
En pekare till en buffert för att placera den formaterade datumsträngen.

size
Buffertens storlek i teckenenheter.

Returvärde

Noll om det lyckas. Returvärdet är en felkod om det uppstår ett fel. Felkoder definieras i ERRNO. H; Se tabellen nedan för de exakta fel som genereras av den här funktionen. Mer information om felkoder finns i errno.

Feltillstånd

buffer size Return Innehållet i buffer
NULL (any) EINVAL Inte ändrad
Inte NULL (pekar på giltig buffert) 0 EINVAL Inte ändrad
Inte NULL (pekar på giltig buffert) 0 <size< 9 EINVAL Tom sträng
Inte NULL (pekar på giltig buffert) size >= 9 0 Aktuellt datum formaterat enligt vad som anges i kommentarerna

Säkerhetsproblem

Om du skickar in ett ogiltigt värde som inte är NULL för bufferresulterar det i en åtkomstöverträdelse om parametern size är större än nio.

Att skicka ett värde för size större än den faktiska storleken buffer resulterar i en buffertöverskridning.

Anmärkningar

Dessa funktioner ger säkrare versioner av _strdate och _wstrdate. Funktionen _strdate_s kopierar det aktuella systemdatumet till bufferten som pekas på av buffer. Den är formaterad mm/dd/yy, där mm är den tvåsiffriga månaden, dd är den tvåsiffriga dagen och yy är årets två sista siffror. Strängen representerar till exempel den 12/05/99 5 december 1999. Bufferten måste vara minst nio tecken lång.

_wstrdate_s är en bred teckenversion av _strdate_s; argumentet och returvärdet _wstrdate_s för är breda teckensträngar. Dessa funktioner fungerar identiskt annars.

När buffer är en NULL pekare, eller size är mindre än nio tecken, anropas den ogiltiga parameterhanteraren. Det beskrivs i Parameterverifiering. Om körningen tillåts fortsätta returnerar dessa funktioner -1. De anges errno till EINVAL om bufferten är NULL eller om size den är mindre än eller lika med 0. Eller så anges errno de till ERANGE om size är mindre än 9.

I C++förenklas användningen av dessa funktioner av mallöverlagringar. Överlagringarna kan härleda buffertlängd automatiskt, vilket eliminerar behovet av att ange ett size argument. Och de kan automatiskt ersätta icke-säkra funktioner med sina nyare, säkrare motsvarigheter. Mer information finns i Skydda mallöverlagringar.

Felsökningsbiblioteksversionerna av dessa funktioner fyller först bufferten med 0xFE. Om du vill inaktivera det här beteendet använder du _CrtSetDebugFillThreshold.

Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.

Allmän textrutinmappning

TCHAR. H-rutin _UNICODE och _MBCS inte definierad _MBCS definierad _UNICODE definierad
_tstrdate_s _strdate_s _strdate_s _wstrdate_s

Kravspecifikation

Rutin Obligatoriskt huvud
_strdate <time.h>
_wstrdate <time.h> eller <wchar.h>
_strdate_s <time.h>

Example

Se exemplet för time.

Se även

Tidshantering
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