_gcvt
Mengonversi nilai floating-point menjadi string, yang disimpannya dalam buffer. Versi fungsi ini yang lebih aman tersedia; lihat _gcvt_s
.
Sintaks
char *_gcvt(
double value,
int digits,
char *buffer
);
Parameter
value
Nilai yang akan dikonversi.
digits
Jumlah digit signifikan yang disimpan.
buffer
Lokasi penyimpanan untuk hasilnya.
Nilai hasil
_gcvt
mengembalikan penunjuk ke string digit.
Keterangan
Fungsi ini _gcvt
mengonversi floating-point value
menjadi string karakter (yang mencakup titik desimal dan byte tanda yang mungkin) dan menyimpan string di buffer
. buffer
harus cukup besar untuk mengakomodasi nilai yang dikonversi ditambah karakter null yang mengakhiri, yang ditambahkan secara otomatis. Jika ukuran buffer + digits
1 digunakan, fungsi akan menimpa akhir buffer. Penimpaan terjadi karena string yang dikonversi menyertakan titik desimal dan juga dapat berisi informasi tanda dan eksponen. Fungsi ini tidak memperhitungkan luapan. _gcvt
mencoba menghasilkan digits
digit dalam format desimal. Jika tidak bisa, itu menghasilkan digits
digit dalam format eksponensial. Nol berikutnya mungkin ditekan dalam konversi.
Panjang buffer
_CVTBUFSIZE
cukup untuk nilai titik mengambang apa pun.
Fungsi ini memvalidasi parameternya. Jika buffer
adalah NULL
, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi ini diatur errno
ke EINVAL
dan mengembalikan NULL
.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_gcvt |
<stdlib.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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)
Lihat juga
Konversi data
Dukungan matematika dan titik mengambang
atof
, , _atof_l
_wtof
,_wtof_l
_ecvt
_fcvt