Aracılığıyla paylaş


_strtime_s, _wstrtime_s

Geçerli saati arabelleğe kopyalayın. Bu işlevler, CRT'deki _strtime_wstrtimeGüvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümleridir.

Sözdizimi

errno_t _strtime_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrtime_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
   wchar_t (&buffer)[size]
); // C++ only

Parametreler

buffer
Zamanın yazılacağı en az 10 bayt uzunluğunda bir arabellek.

numberOfElements
Arabelleğin boyutu.

Dönüş değeri

Başarılı olursa sıfır.

Hata koşulu oluşursa, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Bir hata varsa dönüş değeri bir hata kodudur. Hata kodları ERRNO içinde tanımlanır. H; Bu işlev tarafından oluşturulan tam hatalar için aşağıdaki tabloya bakın. Hata kodları hakkında daha fazla bilgi için bkz errno . sabitler.

Hata koşulları

buffer numberOfElements İade İçeriği buffer
NULL (herhangi biri) EINVAL Değiştirilmedi
Değil NULL (geçerli arabelleğe işaret ediyor) 0 EINVAL Değiştirilmedi
Değil NULL (geçerli arabelleğe işaret ediyor) 0 < boyut < 9 EINVAL Boş dize
Değil NULL (geçerli arabelleğe işaret ediyor) Boyut > 9 0 Açıklamalarda belirtilen şekilde biçimlendirilmiş geçerli saat

Güvenlik sorunları

Arabellek için geçersiz bir değer geçirildiğindeNULL parametre 9'dan büyükse numberOfElements erişim ihlaline neden olur.

Bunun için numberOfElements gerçek arabellek boyutundan büyük bir değer geçirilmesi arabellek taşmasıyla sonuçlanır.

Açıklamalar

Bu işlevler ve'in _strtime_wstrtimedaha güvenli sürümlerini sağlar. İşlev, _strtime_s geçerli yerel saati ile bufferişaret edilen arabelleğe kopyalar. Saat hh:mm:ss olarak biçimlendirilir; burada hh 24 saatlik gösterimde saati temsil eden iki basamak, mm saati geçen dakikaları temsil eden iki basamak ve ss saniyeleri temsil eden iki basamaktır. Örneğin, 18:23:44 dizesi saat 18:00'de 23 dakika 44 saniyeyi temsil eder. Arabellek en az 9 bayt uzunluğunda olmalıdır; gerçek boyut ikinci parametre tarafından belirtilir.

_wstrtime_s , öğesinin _strtime_sgeniş karakterli bir sürümüdür; bağımsız değişkeni ve dönüş değeri _wstrtime_s geniş karakterli dizelerdir. Bu işlevler aynı şekilde davranır.

C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkarabilir (boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır) ve eski, güvenli olmayan işlevleri yeni ve güvenli karşılıklarıyla otomatik olarak değiştirebilir. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

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
_tstrtime_s _strtime_s _strtime_s _wstrtime_s

Gereksinimler

Yordam Gerekli başlık
_strtime_s <time.h>
_wstrtime_s <time.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// strtime_s.c

#include <time.h>
#include <stdio.h>

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value
    // for the variable.
    //
    _tzset();

    // Display operating system-style date and time.
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
OS time:            14:37:49
OS date:            04/25/03

Ayrıca bkz.

Zaman yönetimi
asctime_s, _wasctime_s
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
mktime, _mktime32, _mktime64
time, _time32, _time64
_tzset