asctime_s, _wasctime_s
Převést tm čas struktury na řetězec znaků.Tyto funkce jsou verze asctime, _wasctime s vylepšení zabezpečení, jak je popsáno v Funkce zabezpečení v CRT.
errno_t asctime_s(
char* buffer,
size_t numberOfElements,
const struct tm *_tm
);
errno_t _wasctime_s(
wchar_t* buffer,
size_t numberOfElements
const struct tm *_tm
);
template <size_t size>
errno_t asctime_s(
char (&buffer)[size],
const struct tm *_tm
); // C++ only
template <size_t size>
errno_t _wasctime_s(
wchar_t (&buffer)[size],
const struct tm *_tm
); // C++ only
Parametry
buffer
[out] Ukazatel na vyrovnávací paměť pro ukládání výsledků řetězec znaků.Tato funkce předpokládá ukazatel do paměti platné umístění určené velikosti numberOfElements.numberOfElements
[v] Velikost vyrovnávací paměti používané k ukládání výsledků._tm
[v] Čas a datum strukturu.Tato funkce předpokládá platný ukazatel structtm objektu.
Vrácená hodnota
0 v případě úspěchu.Pokud dojde k selhání, vyvolán neplatný parametr obslužné rutiny, jak je popsáno v Ověření parametru.Pokud je povoleno pokračovat v provádění, vrácená hodnota je kód chyby.Kódy chyb jsou definovány v kód chyby.H.Další informace naleznete v tématu errno – konstanty.V následující tabulce jsou uvedeny skutečné chybové kódy, vrácené pro každou podmínku chyby.
Chybové podmínky
buffer |
numberOfElements |
tm |
Výsledek |
Hodnota vbuffer |
---|---|---|---|---|
NULL |
Všechny |
Všechny |
EINVAL |
Nezměněno |
Ne NULL (odkazuje na platný paměti) |
0 |
Všechny |
EINVAL |
Nezměněno |
NeNULL |
0< velikost < 26 |
Všechny |
EINVAL |
Prázdný řetězec |
NeNULL |
>= 26 |
NULL |
EINVAL |
Prázdný řetězec |
NeNULL |
>= 26 |
Neplatné časové struktury nebo hodnoty mimo rozsah pro komponenty čas |
EINVAL |
Prázdný řetězec |
[!POZNÁMKA]
Chybové stavy pro wasctime_s jsou podobné asctime_s s tím rozdílem, že maximální velikost se měří ve slovech.
Poznámky
asctime Funkce převede čas uložené ve struktuře na řetězec znaků._tm Hodnota je obvykle získán z volání gmtime nebo localtime.Obě funkce lze použít k vyplnění tm strukturu, jak je definováno v čase.H.
Členské timeptr |
Value |
---|---|
tm_hour |
Hodiny od půlnoci (0-23) |
tm_isdst |
Pozitivní, je-li letní čas v platnosti; 0, pokud letního času není v platnosti; negativní stav letního času neznámý.Knihovny běhu jazyka C předpokládá Spojené státy prováděcí pravidla výpočtu letní čas (DST). |
tm_mday |
Den v měsíci (1-31) |
tm_min |
Minut po hodině (0-59) |
tm_mon |
Měsíc (0 – 11; Ledna = 0) |
tm_sec |
Sekund po minutě (0-59) |
tm_wday |
Den týdne (0 – 6; Neděle = 0) |
tm_yday |
Den roku (0-365; 1. ledna = 0) |
tm_year |
Rok (aktuální rok minus 1900) |
Převedený textový řetězec je také upravena podle nastavení zóny Místní čas.Najdete time, _time32, _time64, _ftime, _ftime32, _ftime64, a localtime_s, _localtime32_s, _localtime64_s funkce informace o konfiguraci místního času a _tzset funkce informace o definování časové pásmo prostředí a globální proměnné.
Výsledek řetězce vyrobené asctime_s obsahuje přesně 26 znaků a má tvar Wed Jan 02 02:03:55 1980\n\0.Slouží 24 hodin.Všechna pole nemají konstantní šířce.Znak nového řádku a znak null zaujímají pozice poslední dva řetězce.Hodnota předaná jako druhý parametr by měl být alespoň tomto velký.Pokud je menší, kód chyby EINVAL, bude vrácena.
_wasctime_s je širokoznaká verze asctime_s._wasctime_s a asctime_s se jinak chovají stejně.
Rutinní mapování obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definováno |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tasctime_s |
asctime_s |
asctime_s |
_wasctime_s |
V jazyce C++ je použití těchto funkcí zjednodušeno díky přetížením šablony; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminují nutnost určit velikost argumentu.Další informace naleznete v tématu Přetížení zabezpečení šablony.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
asctime_s |
<time.h> |
_wasctime_s |
<Time.h> nebo <wchar.h> |
Zabezpečení
Ukazatel vyrovnávací paměti, není-li NULL a ukazatel neodkazuje na platný vyrovnávací paměť, funkce přepíše vše, co je na místě.Také to může způsobit narušení přístupu.
A přetečení vyrovnávací paměti může dojít, pokud předaný argument velikost je větší než skutečná velikost vyrovnávací paměti.
Příklad
Tento program umístí systémový čas na dlouhé celé číslo aclock, překládá do struktury newtime a pak jej převede na řetězec formuláře pro výstup, použití asctime_s funkce.
// crt_asctime_s.c
#include <time.h>
#include <stdio.h>
struct tm newtime;
__time32_t aclock;
int main( void )
{
char buffer[32];
errno_t errNum;
_time32( &aclock ); // Get time in seconds.
_localtime32_s( &newtime, &aclock ); // Convert time to struct tm form.
// Print local time as a string.
errNum = asctime_s(buffer, 32, &newtime);
if (errNum)
{
printf("Error code: %d", (int)errNum);
return 1;
}
printf( "Current date and time: %s", buffer );
return 0;
}
Ekvivalent v rozhraní .NET Framework
Viz také
Referenční dokumentace
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s