_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指數格式中的數字。 後隨零會隱藏在轉換中。
A buffer長度的_CVTBUFSIZE不足,任何浮點值。
這個函式會驗證它的參數。 如果buffer是NULL,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這個函式會將errno到EINVAL ,並傳回NULL。
需求
常式 |
所需的標頭 |
---|---|
_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) );
}