Aracılığıyla paylaş


_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 bufferdepolar. , 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