asctime_s
, _wasctime_s
tm
Zaman yapısını karakter dizesine dönüştürme. Bu işlevler, CRT'deki asctime
_wasctime
Gü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 numberOfElements
belirtilen 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 EINVAL
dö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 aclock
yerleş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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin