Aracılığıyla paylaş


_ecvt_s

Sayıyı double 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_ecvt.

Sözdizimi

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

Parametreler

buffer
Basamak dizesi işaretçisi ile doldurulmuş, dönüştürmenin sonucu.

sizeInBytes
Arabelleğin bayt cinsinden boyutu.

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

count
Depolanan basamak sayısı.

dec
Depolanan ondalık nokta konumu.

sign
Dönüştürülen sayının işareti.

Dönüş değeri

Başarılı olursa sıfır. Bir hata varsa dönüş değeri bir hata kodudur. Hata kodları Errno.h içinde tanımlanır. Daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Aşağıdaki tabloda listelendiği gibi geçersiz bir parametre varsa, 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 EINVALayarlanır errno ve döndürürEINVAL.

Hata koşulları

buffer sizeInBytes value count dec sign Dönüş değeri 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ı

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

Açıklamalar

işlevi kayan _ecvt_s noktalı bir sayıyı karakter dizesine dönüştürür. value parametresi dönüştürülecek kayan noktalı sayıdır. Bu işlev en çok count basamak value sayısını dize olarak depolar ve null karakter ('\0') ekler. içindeki value basamak sayısı değerini aşarsa count, düşük sıralı basamak yuvarlanmış olur. Basamaktan 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. parametresi, dec dizenin başına göre ondalık noktasının konumunu veren bir tamsayı değerini gösterir. 0 veya negatif tamsayı değeri, ondalık ayırıcının ilk basamuğun solunda olduğunu gösterir. parametresi, sign dönüştürülen sayının işaretini gösteren bir tamsayıya işaret eder. Tamsayı değeri 0 ise, sayı pozitiftir. Aksi takdirde, sayı negatiftir.

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 _fcvt_s toplam basamak sayısı olarak, ondalık ayırıcıdan sonraki basamak sayısı olarak yorumlarcount.

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
_ecvt_s <stdlib.h> <errno.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

// ecvt_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 = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);

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

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

Ayrıca bkz.

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