Aracılığıyla paylaş


asctime_s, _wasctime_s

tm Zaman yapısını karakter dizesine dönüştürme. Bu işlevler, CRT'deki asctime_wasctimeGüvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümleridir.

Sözdizimi

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

Parametreler

buffer
Karakter dizesi sonucunu depolamak için arabelleğe işaretçi. Bu işlev, tarafından numberOfElementsbelirtilen boyuta sahip geçerli bir bellek konumuna yönelik bir işaretçi olduğunu varsayar.

numberOfElements
Sonucu depolamak için kullanılan arabellek boyutu.

tmSource
Saat/tarih yapısı. Bu işlev geçerli struct tm bir nesnenin işaretçisini varsayar.

Dönüş değeri

Başarılı olursa sıfır. Bir hata varsa, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, dönüş değeri bir hata kodudur. Hata kodları ERRNO.H içinde tanımlanır. Daha fazla bilgi için bkz errno . sabitler. Her hata koşulu için döndürülen gerçek hata kodları aşağıdaki tabloda gösterilmiştir.

Hata koşulları

buffer numberOfElements tmSource İade içindeki değer buffer
NULL Herhangi biri Herhangi biri EINVAL Değiştirilmedi
Değil NULL (geçerli belleğe işaret eden) 0 Tümü EINVAL Değiştirilmedi
Değil NULL 0<numberOfElements< 26 Tümü EINVAL Boş dize
Değil NULL >= 26 NULL EINVAL Boş dize
Değil NULL >= 26 Zamanın bileşenleri için geçersiz zaman yapısı veya aralık dışı değerler EINVAL Boş dize

Dekont

için wasctime_s hata koşulları, boyut sınırının sözcüklerle ölçülmüş olması özel durumuyla benzerdir asctime_s .

Açıklamalar

işlevi, asctime yapı olarak depolanan zamanı bir karakter dizesine dönüştürür. tmSource Değer genellikle veya localtimeçağrısından gmtime elde edilir. Her iki işlev de TIME.H'de tanımlandığı gibi bir tm yapıyı doldurmak için kullanılabilir.

timeptr üyesi Değer
tm_hour Gece yarısından bu yana saatler (0-23)
tm_isdst Gün ışığından yararlanma saati etkinse pozitif; Gün ışığından yararlanma saati etkin değilse 0; gün ışığından yararlanma saatinin durumu bilinmiyorsa negatif. C çalışma zamanı kitaplığı, Yaz Saati (DST) hesaplamasını uygulamak için Birleşik Devletler kurallarını varsayar.
tm_mday Ayın günü (1-31)
tm_min Saatten dakika (0-59)
tm_mon Ay (0-11; Ocak = 0)
tm_sec Dakika sonra saniye (0-59)
tm_wday Haftanın günü (0-6; Pazar = 0)
tm_yday Yılın günü (0-365; 1 Ocak = 0)
tm_year Yıl (geçerli yıl eksi 1900)

Dönüştürülen karakter dizesi de yerel saat dilimi ayarlarına göre ayarlanır. Yerel saati yapılandırma hakkında bilgi için bkztime. , _time32, _time64,_ftime , _ftime32,_ftime64 , ve localtime_s, _localtime32_s, _localtime64_s işlevleri. Saat dilimi ortamını ve genel değişkenleri tanımlama hakkında bilgi için bkz _tzset. .

tarafından asctime_s üretilen dize sonucu tam olarak 26 karakter içerir ve biçimindedir Wed Jan 2 02:03:55 1980\n\0. 24 saat kullanılır. Tüm alanların genişliği sabit olur. Yeni satır karakteri ve null karakter, dizenin son iki konumunda yer alır. olarak numberOfElements geçirilen değer en azından bu boyutta olmalıdır. Daha azsa, bir hata kodu EINVALdöndürülür.

_wasctime_s , öğesinin geniş karakterli bir sürümüdür asctime_s. _wasctime_s ve asctime_s aksi takdirde aynı şekilde davran.

Bu işlevlerin hata ayıklama kitaplığı sürümleri önce arabelleği 0xFE ile doldurur. Bu davranışı devre dışı bırakmak için kullanın _CrtSetDebugFillThreshold.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemesi

TCHAR.H yordamı _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tasctime_s asctime_s asctime_s _wasctime_s

C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkararak boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

Gereksinimler

Yordam Gerekli başlık
asctime_s <time.h>
_wasctime_s <time.h> veya <wchar.h>

Güvenlik

Arabellek işaretçisi değilse NULL ve işaretçi geçerli bir arabelleğe işaret etmiyorsa, işlev konumdaki her ne olursa olsun üzerine yazar. Bu hata erişim ihlaline de neden olabilir.

geçirilen boyut bağımsız değişkeni, arabelleğindeki gerçek boyuttan büyükse arabellek taşması oluşabilir.

Örnek

Bu program, sistem zamanını uzun tamsayıya aclockyerleştirir, yapısına newtimeçevirir ve ardından işlevini kullanarak çıkış için dize biçimine asctime_s dönüştürür.

// 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

Ayrıca bkz.

Zaman yönetimi
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