_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_errlist
ve _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 EINVAL
ayarlanı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 NULL
değ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_s
count
çı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