_strdate_s, _wstrdate_s

Skopiuj bieżącą datę systemu do buforu. Te funkcje to wersje programu _strdate_wstrdatez ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.

Składnia

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
Wskaźnik do buforu, aby umieścić sformatowany ciąg daty.

size
Rozmiar buforu w jednostkach znaków.

Wartość zwracana

Zero, jeśli się powiedzie. Wartość zwracana jest kodem błędu, jeśli wystąpi błąd. Kody błędów są zdefiniowane w błędzie ERRNO. H; Zobacz tabelę poniżej, aby uzyskać dokładne błędy wygenerowane przez tę funkcję. Aby uzyskać więcej informacji na temat kodów błędów, zobacz errno.

Warunki błędu

buffer size Zwrot 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 <size< 9 EINVAL Pusty ciąg
Nie NULL (wskazując prawidłowy bufor) size>= 9 0 Bieżąca data sformatowana w sposób określony w uwagach

Problemy z zabezpieczeniami

Jeśli przekażesz nieprawidłową wartość inną niż NULL dla bufferparametru , spowoduje to naruszenie dostępu, jeśli size parametr jest większy niż dziewięć.

Przekazywanie wartości dla size większego buffer niż rzeczywisty rozmiar wyników w przepełnieniu buforu.

Uwagi

Te funkcje zapewniają bezpieczniejsze wersje elementów _strdate i _wstrdate. Funkcja _strdate_s kopiuje bieżącą datę systemową do buforu wskazywane przez buffer. Jest sformatowany mm/dd/yy, gdzie mm jest dwucyfrowym miesiącem, dd jest dwucyfrowym dniem i yy jest dwiema ostatnimi cyframi roku. Na przykład ciąg 12/05/99 reprezentuje 5 grudnia 1999 r. Bufor musi mieć co najmniej dziewięć znaków.

_wstrdate_s jest wersją szerokoznakową ; _strdate_sargument i wartość zwracana _wstrdate_s są ciągami o szerokim znaku. Te funkcje zachowują się identycznie inaczej.

Jeśli buffer jest wskaźnikiem NULL lub size jest mniej niż dziewięć znaków, wywoływana jest nieprawidłowa procedura obsługi parametrów. Opisano to w temacie Weryfikacja parametrów. Jeśli wykonanie może kontynuować, te funkcje zwracają wartość -1. Ustawiają wartość errno na EINVAL wartość , jeśli bufor jest NULL lub jest size mniejszy lub równy 0. Można też ustawić wartość errno na ERANGE wartość , jeśli size jest mniejsza niż 9.

W języku C++użycie tych funkcji jest uproszczone przez przeciążenia szablonów. Przeciążenia mogą automatycznie wnioskować długość buforu, co eliminuje konieczność określenia argumentu size . Ponadto mogą automatycznie zastępować funkcje niebezpieczne nowszymi, bardziej 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 Zdefiniowane _UNICODE Zdefiniowane
_tstrdate_s _strdate_s _strdate_s _wstrdate_s

Wymagania

Procedura Wymagany nagłówek
_strdate <time.h>
_wstrdate <time.h> lub <wchar.h>
_strdate_s <time.h>

Przykład

Zobacz przykład dla elementu time.

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