_gcvt
將浮點值轉換為字串,接著儲存在緩衝區中。 此函式有更安全的版本可供使用;請參閱 _gcvt_s
。
語法
char *_gcvt(
double value,
int digits,
char *buffer
);
參數
value
要轉換的值。
digits
儲存的重要數字的數目。
buffer
結果的儲存位置。
傳回值
_gcvt
傳回指標至數字字串。
備註
_gcvt
函式會將浮點 value
轉換為字元字串 (其中包括小數點和可能的正負號位元組),並將字串儲存在 buffer
中。 buffer
應該大到足以容納轉換的值加上會自動予以附加的結束 Null 字元。 如果使用的緩衝區大小為 digits
+ 1 ,則函式會覆寫緩衝區結尾。 因為已轉換的字串包含小數點,而且也可以包含符號和指數資訊,因此會發生覆寫。 函式不會考慮溢位。 _gcvt
嘗試以十進位格式產生 digits
個數字。 如果無法,則會以指數格式產生 digits
數位。 可能於轉換中隱藏尾端零。
長度為_CVTBUFSIZE
的buffer
足可供任何浮點值使用。
這個函式會驗證它的參數。 如果 buffer
為 NULL
,將會叫用無效參數處理常式,如參數驗證 (部分機器翻譯) 中所述。 若允許繼續執行,此函式會將 errno
設為 EINVAL
,並傳回 NULL
。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態。
需求
常式 | 必要的標頭 |
---|---|
_gcvt |
<stdlib.h> |
如需相容性詳細資訊,請參閱相容性。
範例
// 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)