_gcvt
轉換浮點數值為字串,儲存於緩衝區。 這個函式更安全的版本可用;請參閱 _gcvt_s。
char *_gcvt(
double value,
int digits,
char *buffer
);
參數
value
要轉換的值。digits
儲存的有效位數。buffer
結果的儲存位置。
傳回值
_gcvt傳回數值字串的指標。
備註
_gcvt 函式轉換浮點數 value 為一個字元字串 (包含小數點和可能的正負號位元組) 並將字串儲存於 buffer 。 buffer 必須足以容納轉換後的值加上末尾的空字元,空字元會被自動加入。 如果緩衝區大小+1被使用,則digits 函式會覆寫緩衝區的結尾。 這是因為轉換後的字串包含小數點,而且可以包含標記和指數資訊。 沒有溢位的規則。 _gcvt 嘗試在十進位下產生 digits 位數。 如果不行,它將以指數格式產生 digits 位數。 末尾的零可能在轉換中被隱藏。
具有_CVTBUFSIZE 長度的buffer 足夠容納任何浮點數值。
這個函式會驗證它的參數。 如果 buffer 是 NULL,則叫用無效參數處理常式,如 參數驗證 中所述。 如果允許繼續執行,函式將 errno 設置為 EINVAL 並回傳 NULL 。
需求
常式 |
必要的標頭 |
---|---|
_gcvt |
<stdlib.h> |
如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// 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) );
}