_gcvt
Kayan nokta değerini arabelleğe depoladığı bir dizeye dönüştürür. Bu işlevin daha güvenli bir sürümü kullanılabilir; bkz _gcvt_s
. .
Sözdizimi
char *_gcvt(
double value,
int digits,
char *buffer
);
Parametreler
value
Dönüştürülecek değer.
digits
Depolanan önemli basamak sayısı.
buffer
Sonuç için depolama konumu.
Dönüş değeri
_gcvt
basamak dizesine bir işaretçi döndürür.
Açıklamalar
İşlev, _gcvt
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 buffer
depolar. , buffer
dönüştürülen değerin yanı sıra otomatik olarak eklenen bir sonlandırıcı null karaktere uyacak kadar büyük olmalıdır. + 1 arabellek boyutu digits
kullanılırsa, işlev arabelleğin sonunun üzerine yazar. Üzerine yazma işlemi, dönüştürülen dize bir ondalık nokta içerdiğinden ve aynı zamanda işaret ve üs bilgileri içerebildiğinden gerçekleşir. İşlev taşma işlemini hesaba bağlamaz. _gcvt
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.
Herhangi buffer
bir kayan nokta değeri için uzunluk _CVTBUFSIZE
yeterlidir.
Bu işlev parametrelerini doğrular. ise buffer
NULL
, 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, bu işlev olarak EINVAL
ayarlanır errno
ve döndürürNULL
.
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 |
---|---|
_gcvt |
<stdlib.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_gcvt.c
// compile with: /W3
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main( void )
{
char buffer[_CVTBUFSIZE];
double value = -1234567890.123;
printf( "The following numbers were converted by _gcvt(value,12,buffer):\n" );
_gcvt( value, 12, buffer ); // C4996
// Note: _gcvt is deprecated; consider using _gcvt_s instead
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
printf( "\n" );
value = -12.34567890123;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}
The following numbers were converted by _gcvt(value,12,buffer):
buffer: '-1234567890.12' (14 chars)
buffer: '-12345678901.2' (14 chars)
buffer: '-123456789012' (13 chars)
buffer: '-1.23456789012e+012' (19 chars)
buffer: '-12.3456789012' (14 chars)
buffer: '-1.23456789012' (14 chars)
buffer: '-0.123456789012' (15 chars)
buffer: '-1.23456789012e-002' (19 chars)
Ayrıca bkz.
Veri dönüştürme
Matematik ve kayan nokta desteği
atof
, _atof_l
, _wtof
, _wtof_l
_ecvt
_fcvt