_strdate_s
, _wstrdate_s
Skopiuj bieżącą datę systemu do buforu. Te funkcje to wersje programu _strdate
_wstrdate
z 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 |
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 <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 buffer
parametru , 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_s
argument 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 zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_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