Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konwertuje wartość zmiennoprzecinkową na ciąg, który jest przechowywany w buforze. Dostępna jest bezpieczniejsza wersja tej funkcji; zobacz _gcvt_s
.
Składnia
char *_gcvt(
double value,
int digits,
char *buffer
);
Parametry
value
Wartość do przekonwertowania.
digits
Liczba przechowywanych cyfr znaczących.
buffer
Lokalizacja magazynu dla wyniku.
Wartość zwracana
_gcvt
Zwraca wskaźnik do ciągu cyfr.
Uwagi
Funkcja _gcvt
konwertuje zmiennoprzecinkowy value
na ciąg znaków (zawierający punkt dziesiętny i możliwy bajt znaku) i przechowuje ciąg w pliku buffer
. Wartość buffer
powinna być wystarczająco duża, aby pomieścić przekonwertowaną wartość oraz znak null zakończenia, który jest dołączany automatycznie. Jeśli jest używany rozmiar buforu digits
+ 1, funkcja zastępuje koniec buforu. Zastępowanie występuje, ponieważ przekonwertowany ciąg zawiera punkt dziesiętny i może również zawierać informacje znakowe i wykładnicze. Funkcja nie uwzględnia przepełnienia. _gcvt
próbuje utworzyć digits
cyfry w formacie dziesiętny. Jeśli nie, tworzy digits
cyfry w formacie wykładniczym. Końcowe zera mogą być pomijane w konwersji.
Długość buffer
_CVTBUFSIZE
jest wystarczająca dla każdej wartości zmiennoprzecinkowej.
Ta funkcja weryfikuje jego parametry. Jeśli buffer
parametr ma NULL
wartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, ta funkcja ustawia errno
wartość EINVAL
i zwraca wartość NULL
.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_gcvt |
<stdlib.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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)
Zobacz też
Konwersja danych
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
atof
, , _atof_l
, , _wtof
_wtof_l
_ecvt
_fcvt