_fcvt_s
Kayan noktalı sayı bir dizeye dönüştürür.Bu sürümü, _fcvt açıklandığı gibi güvenlik geliştirmeleri ile CRT'deki Güvenlik Özellikleri.
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
[Çıkış]buffer
Sağlanan arabellek dönüştürülme tutacaktır.[in]sizeInBytes
Arabelleğinin bayt cinsinden boyutu.[in]value
Dönüştürülecek sayı.[in]count
Ondalık basamak sayısı.[Çıkış]dec
Saklanan ondalık nokta Konum işaretçisi.[Çıkış]sign
Depolanan oturum göstergesi için işaretçi.
Dönüş Değeri
Başarılı olursa sıfır.Bir hata varsa dönüş değeri hata kodudur.Hata kodları Errno.h tanımlanır.Bu hataların listesi için bkz: errno, _doserrno, _sys_errlist, and _sys_nerr.
Geçersiz bir parametre aşağıdaki tabloda listelendiği gibi bu işlevi geçersiz parametre işleyicisi açıklandığı gibi çağırır Parametre Doğrulama.Yürütülmesine devam etmek için izin verilmişse, bu işlevi ayarlar errno için EINVAL ve EINVAL.
Hata koşulları
buffer |
sizeInBytes |
value |
count |
Ara |
sign |
Return |
İçindeki değerbuffer |
---|---|---|---|---|---|---|---|
NULL |
herhangi bir |
herhangi bir |
herhangi bir |
herhangi bir |
herhangi bir |
EINVAL |
Değiştirilmedi. |
Değil NULL (noktaları için geçerli bellek) |
< = 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_serişim ihlali olursa oluşturabilecek buffer için geçerli bellek göstermiyor ve değil NULL.
Notlar
_fcvt_s İşlevi bir kayan noktalı sayı biten karakter dizesine dönüştürür.value Dönüştürülecek kayan noktalı sayı parametresidir._fcvt_srakamını depolar value bir dize olarak ve boş karakter ('\0') ekler.count Parametresi ondalık ayırıcıdan sonra depolanan basamak sayısını belirtir.Fazla basamak yuvarlanmış için count yerleştirir.Varsa daha az count basamak duyarlıkla dize sıfır koyarak azsa.
Yalnızca rakam dizesi içinde saklanır.Ondalık noktası ve işareti konumunu value den alınan dec ve sign çağrısının.dec Parametresi gösteren bir tamsayı değeri için; Bu tamsayı değeri dize başlangıcını açısından ondalık noktasının konumunu verir.Sıfır veya negatif tamsayı değeri gösterir ondalık noktasının ilk basamak soluna yatmaktadır.Parametre sign belirtisi gösteren bir tamsayı işaret value.Tamsayı sıfıra ayarlanır value pozitif ve sıfır olmayan bir sayı Eğer set value negatif olur.
Arabellek uzunluğu _CVTBUFSIZE herhangi bir değişken için yeterli olan nokta değeri.
Arasındaki fark _ecvt_s ve _fcvt_s 'ın yorumu olan count parametresi._ecvt_syorumlar count toplam çıkış dizesi basamak sayısı arttıkça ve _fcvt_s c yorumlarount ondalık basamak sayısı.
C++'da, bu işlevi kullanarak şablon aşırı tarafından basitleştirilerek verilmiştir; aşırı arabellek uzunluğu otomatik olarak size baðýmsýz deðiþkeni belirtmek için gereksiz gerçekleştirip.Daha fazla bilgi için bkz. Güvenli Şablon Aşırı Yüklemeleri.
Bu işlev hata ayıklama sürümünü ilk 0xFD ile arabellek doldurur.Bu davranışı devre dışı bırakmak için _CrtSetDebugFillThreshold.
Gereksinimler
İşlev |
Gerekli başlık |
İsteğe bağlı bir üstbilgi |
---|---|---|
_fcvt_s |
<stdlib.h> |
<errno.h> |
Daha fazla uyumluluk bilgileri için bkz: Uyumluluk giriş.
Kitaplıklar: tüm sürümleri CRT Kitaplık Özellikleri.
Ö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);
}