asctime_s
, _wasctime_s
Převede časovou tm
strukturu na řetězec znaků. Tyto funkce jsou verze asctime
, _wasctime
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Syntaxe
errno_t asctime_s(
char* buffer,
size_t numberOfElements,
const struct tm *tmSource
);
errno_t _wasctime_s(
wchar_t* buffer,
size_t numberOfElements
const struct tm *tmSource
);
template <size_t size>
errno_t asctime_s(
char (&buffer)[size],
const struct tm *tmSource
); // C++ only
template <size_t size>
errno_t _wasctime_s(
wchar_t (&buffer)[size],
const struct tm *tmSource
); // C++ only
Parametry
buffer
Ukazatel na vyrovnávací paměť pro uložení výsledku řetězce znaků. Tato funkce předpokládá ukazatel na platné umístění paměti s velikostí určenou hodnotou numberOfElements
.
numberOfElements
Velikost vyrovnávací paměti použité k uložení výsledku.
tmSource
Struktura času a data Tato funkce předpokládá ukazatel na platný struct tm
objekt.
Vrácená hodnota
Nula v případě úspěchu. Pokud dojde k chybě, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je možné pokračovat spuštěním, návratová hodnota je kód chyby. Kódy chyb jsou definovány v ERRNO.H. Další informace najdete v tématu errno
konstanty. Skutečné kódy chyb vrácené pro každou chybovou podmínku jsou uvedeny v následující tabulce.
Chybové podmínky
buffer |
numberOfElements |
tmSource |
Zpět | Hodnota v buffer |
---|---|---|---|---|
NULL |
Všechny | Všechny | EINVAL |
Neupraveno |
Not NULL (odkazuje na platnou paměť) |
0 | Všechny | EINVAL |
Neupraveno |
Ne NULL |
0<numberOfElements < 26 |
Všechny | EINVAL |
Prázdný řetězec |
Ne NULL |
>= 26 | NULL |
EINVAL |
Prázdný řetězec |
Ne NULL |
>= 26 | Neplatná struktura času nebo hodnoty mimo rozsah pro součásti času | EINVAL |
Prázdný řetězec |
Poznámka:
Chybové stavy se wasctime_s
podobají asctime_s
výjimce, že se limit velikosti měří ve slovech.
Poznámky
Funkce asctime
převede čas uložený jako strukturu na řetězec znaků. Hodnota tmSource
se obvykle získává z volání nebo gmtime
localtime
. Obě funkce lze použít k vyplnění tm
struktury, jak je definováno v time.H.
člen časovače | Hodnota |
---|---|
tm_hour |
Hodiny od půlnoci (0-23) |
tm_isdst |
Pozitivní, pokud se letní čas projeví; 0, pokud letní čas není v platnosti; negativní, pokud je stav letního času neznámý. Knihovna runtime jazyka C předpokládá pravidla USA pro implementaci výpočtu letního času (DST). |
tm_mday |
Den v měsíci (1–31) |
tm_min |
Minuty po hodině (0–59) |
tm_mon |
Měsíc (0–11; Leden = 0) |
tm_sec |
Sekundy po minutě (0–59) |
tm_wday |
Den v týdnu (0-6; Neděle = 0) |
tm_yday |
Den roku (0–365; 1. ledna = 0) |
tm_year |
Rok (aktuální rok minus 1900) |
Převedený řetězec znaků se také upraví podle nastavení místního časového pásma. Informace o konfiguraci místního času naleznete v tématu time
, _time32
,_time64
,_ftime
, _ftime64
_ftime32
a localtime_s
, _localtime32_s
, _localtime64_s
funkce. Informace o definování prostředí časového pásma a globálních proměnných naleznete v tématu _tzset
.
Výsledek řetězce vytvořený asctime_s
pomocí přesně 26 znaků a má formulář Wed Jan 2 02:03:55 1980\n\0
. Používá se 24hodinový formát. Všechna pole mají konstantní šířku. Nový znak řádku a znak null zabírají poslední dvě pozice řetězce. Hodnota předaná tak, jak numberOfElements
by měla mít alespoň tuto velikost. Pokud je méně, vrátí se kód EINVAL
chyby.
_wasctime_s
je širokoznační verze .asctime_s
_wasctime_s
a asctime_s
chovat se stejně jinak.
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 definovaný |
_UNICODE definovaný |
---|---|---|---|
_tasctime_s |
asctime_s |
asctime_s |
_wasctime_s |
V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminuje nutnost zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
asctime_s |
<time.h> |
_wasctime_s |
<time.h> nebo <wchar.h> |
Zabezpečení
Pokud ukazatel vyrovnávací paměti není NULL
a ukazatel neodkazuje na platnou vyrovnávací paměť, funkce přepíše cokoli, co je v umístění. Tato chyba může také vést k narušení přístupu.
Přetečení vyrovnávací paměti může nastat, pokud je argument velikosti předaný větší než skutečná velikost vyrovnávací paměti.
Příklad
Tento program umístí systémový čas do dlouhého celého čísla aclock
, přeloží ho do struktury newtime
a pak ho převede na řetězcový formulář pro výstup pomocí 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;
}
Current date and time: Wed May 14 15:30:17 2003
Viz také
Správa času
ctime_s
, _ctime32_s
, _ctime64_s
, _wctime_s
, , _wctime32_s
_wctime64_s
_ftime
, , _ftime32
_ftime64
gmtime_s
, , _gmtime32_s
_gmtime64_s
localtime_s
, , _localtime32_s
_localtime64_s
time
, , _time32
_time64
_tzset