Aracılığıyla paylaş


_gcvt_s

Kayan nokta değerini dizeye dönüştürür. Bu işlev, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren bir sürümüdür_gcvt.

Sözdizimi

errno_t _gcvt_s(
   char *buffer,
   size_t sizeInBytes,
   double value,
   int digits
);
template <size_t cchStr>
errno_t _gcvt_s(
   char (&buffer)[cchStr],
   double value,
   int digits
); // C++ only

Parametreler

buffer
Dönüştürmenin sonucunu depolamak için arabellek.

sizeInBytes
Arabelleğin boyutu.

value
Dönüştürülecek değer.

digits
Depolanan önemli basamak sayısı.

Dönüş değeri

Başarılı olursa sıfır. Geçersiz bir parametreden dolayı bir hata oluşursa (geçersiz değerler için aşağıdaki tabloya bakın), 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 bir hata kodu döndürülür. Hata kodları Errno.h içinde tanımlanır. Bu hataların listesi için bkz errno. , _doserrno, _sys_errlistve _sys_nerr.

Hata koşulları

buffer sizeInBytes value digits İade içindeki değer buffer
NULL herhangi bir herhangi bir herhangi bir EINVAL Değiştirilmedi.
Değil NULL (geçerli belleğe işaret eden) sıfır herhangi bir herhangi bir EINVAL Değiştirilmedi.
Değil NULL (geçerli belleğe işaret eden) herhangi bir herhangi bir >= sizeInBytes EINVAL Değiştirilmedi.

Güvenlik Sorunları

_gcvt_s geçerli belleğe işaret etmiyorsa buffer ve NULLdeğilse erişim ihlali oluşturabilir.

Açıklamalar

İşlev, _gcvt_s kayan noktayı value bir karakter dizesine (ondalık nokta ve olası bir işaret baytını içeren) dönüştürür ve dizeyi içinde bufferdepolar. buffer dönüştürülen değerin yanı sıra otomatik olarak eklenen sonlandırıcı null karaktere uyum sağlamak için yeterince büyük olmalıdır. Herhangi bir kayan nokta değeri için uzunluk _CVTBUFSIZE arabellek yeterlidir. + 1 arabellek boyutu digits kullanılırsa, işlev arabelleğin sonunun üzerine yazmaz, bu nedenle bu işlem için yeterli bir arabellek sağladığından emin olun. _gcvt_s ondalık biçimde basamak üretmeye digits çalışır. Yapamazsa, basamakları üstel biçimde üretir digits . Sondaki sıfırlar dönüştürmede gizlenebilir.

C++'ta bu işlevin kullanılması şablon aşırı yüklemesi ile basitleştirilmiştir; aşırı yükleme 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.

Bu işlevin hata ayıklama sürümü ö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.

Gereksinimler

Yordam Gerekli başlık İsteğe bağlı üst bilgi
_gcvt_s <stdlib.h> <error.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main()
{
    char buf[_CVTBUFSIZE];
    int decimal;
    int sign;
    int err;

    err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);

    if (err != 0)
    {
        printf("_gcvt_s failed with error code %d\n", err);
        exit(1);
    }

    printf("Converted value: %s\n", buf);
}
Converted value: 1.2

Ayrıca bkz.

Veri dönüştürme
Matematik ve kayan nokta desteği
atof, _atof_l, _wtof, _wtof_l
_ecvt_s
_fcvt_s
_gcvt