Sdílet prostřednictvím


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_ftime32a 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 EINVALchyby.

_wasctime_sje š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 newtimea 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