Udostępnij przez


_gcvt

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 NULLwartość , 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