Aracılığıyla paylaş


_fcvt_s

Kayan noktalı sayıyı 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_fcvt.

Sözdizimi

errno_t _fcvt_s(
   char* buffer,
   size_t sizeInBytes,
   double value,
   int count,
   int *dec,
   int *sign
);
template <size_t size>
errno_t _fcvt_s(
   char (&buffer)[size],
   double value,
   int count,
   int *dec,
   int *sign
); // C++ only

Parametreler

buffer
Dönüştürmenin sonucunu tutacak sağlanan arabellek.

sizeInBytes
Arabelleğin bayt cinsinden boyutu.

value
Dönüştürülecek sayı.

count
Ondalık ayırıcıdan sonraki basamak sayısı.

dec
Depolanan ondalık nokta konumuna işaret eden işaretçi.

sign
Depolanan işaret göstergesinin işaretçisi.

Dönüş değeri

Başarılı olursa sıfır. Bir hata varsa dönüş değeri bir hata kodudur. Hata kodları içinde errno.htanımlanır. Bu hataların listesi için bkz errno. , _doserrno, _sys_errlistve _sys_nerr.

Aşağıdaki tabloda listelendiği gibi geçersiz bir parametre olduğunda, bu işlev Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL ayarlanır errno ve döndürürEINVAL.

Hata koşulları

buffer sizeInBytes value count dec sign İade içindeki değer buffer
NULL herhangi bir herhangi bir herhangi bir herhangi bir herhangi bir EINVAL Değiştirilmedi.
Değil NULL (geçerli belleğe işaret eden) <=0 herhangi bir herhangi bir herhangi bir herhangi bir EINVAL Değiştirilmedi.
herhangi bir herhangi bir herhangi bir herhangi bir NULL herhangi bir EINVAL Değiştirilmedi.
herhangi bir herhangi bir herhangi bir herhangi bir herhangi bir NULL EINVAL Değiştirilmedi.

Güvenlik Sorunları

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

Açıklamalar

İşlev, _fcvt_s kayan noktalı bir sayıyı null ile sonlandırılan karakter dizesine dönüştürür. value parametresi dönüştürülecek kayan noktalı sayıdır. _fcvt_s basamaklarını value dize olarak depolar ve null karakter ekler ('\0'). parametresi ondalık count ayırıcıdan sonra depolanacak basamak sayısını belirtir. Fazla basamaklar yerlere yuvarlanır count . Duyarlık basamaklarından daha count azsa, dize sıfırlarla doldurulur.

Dizede yalnızca basamaklar depolanır. Ondalık noktasının konumu ve işareti value çağrıdan sonra ve sign çağrıdan dec sonra elde edilebilir. dec parametresi bir tamsayı değerine işaret eder; bu tamsayı değeri, dizenin başlangıcına göre ondalık noktasının konumunu verir. Sıfır veya negatif tamsayı değeri, ondalık ayırıcının ilk basamuğun solunda olduğunu gösterir. parametresi sign , işaretini valuegösteren bir tamsayıya işaret ediyor. Tamsayı pozitifse value 0 olarak ayarlanır ve negatifse value sıfır olmayan bir sayıya ayarlanır.

Herhangi bir kayan nokta değeri için uzunluk _CVTBUFSIZE arabellek yeterlidir.

ile _fcvt_s arasındaki _ecvt_s fark, parametresinin yorumlanmasındadırcount. _ecvt_scount çıkış dizesindeki toplam basamak sayısı olarak yorumlar count ve _fcvt_s ondalık ayırıcıdan sonraki basamak sayısı olarak yorumlar.

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

İşlev Gerekli başlık İsteğe bağlı üst bilgi
_fcvt_s <stdlib.h> <errno.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar: C çalışma zamanı kitaplıklarının tüm sürümleri.

Örnek

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

int main()
{
    char * buf = 0;
    int decimal;
    int sign;
    int err;

    buf = (char*) malloc(_CVTBUFSIZE);
    err = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);

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

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

Ayrıca bkz.

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