Udostępnij za pośrednictwem


_gcvt_s

Konwertuje wartości zmiennoprzecinkowych na ciąg.Jest to wersja z _gcvt z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.

errno_t _gcvt_s( 
   char *buffer,
   size_t sizeInBytes,
   double value,
   int digits 
);
template <size_t cchStr>
errno_t _gcvt_s( 
   char (&buffer)[cchStr],
   double value,
   int digits 
); // C++ only

Parametry

  • [out]buffer
    Bufor do przechowywania wyników konwersji.

  • [w]sizeInBytes
    Rozmiar buforu.

  • [w]value
    Wartości są konwertowane.

  • [w]digits
    Liczba cyfr znaczących przechowywane.

Wartość zwracana

Zero, jeśli kończy się pomyślnie.Jeśli wystąpi awaria, ze względu na nieprawidłowy parametr (patrz poniższa tabela zawiera nieprawidłowe wartości), wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, zwracany jest kod błędu.Kody błędów są zdefiniowane w errno.Aby uzyskać listę tych błędów, zobacz errno, _doserrno, _sys_errlist i _sys_nerr.

Warunki błędów

buffer

sizeInBytes

value

digits

Zwrot

Wartośćbuffer

NULL

wszelkie

wszelkie

wszelkie

EINVAL

Nie jest modyfikowany.

Nie NULL (wskazuje prawidłowy pamięci)

zero

wszelkie

wszelkie

EINVAL

Nie jest modyfikowany.

Nie NULL (wskazuje prawidłowy pamięci)

wszelkie

wszelkie

> =sizeInBytes

EINVAL

Nie jest modyfikowany.

Problemy dotyczące zabezpieczeń

_gcvt_smożna wygenerować naruszenie zasad dostępu, jeśli buffer nie wskazuje prawidłowy pamięci i nie jest NULL.

Uwagi

_gcvt_s Funkcja konwertuje zmiennoprzecinkowych value do ciągu znaków (która obejmuje z punktem dziesiętnym i bajt możliwe znak) i przechowuje ciąg w buffer.bufferpowinna być wystarczająco duża, aby pomieścić konwertowaną wartość plus kończącego znaku null, który jest dołączany automatycznie.Bufor o długości _CVTBUFSIZE jest wystarczający dla żadnych przestawnych wartości.Jeśli rozmiar buforu digits + 1 jest używany, funkcja nie zastąpi koniec buforu, więc należy dostarczyć dostatecznego bufora dla tej operacji._gcvt_spróbuje do produkcji digits cyfr w formacie dziesiętnym.Jeśli nie, wytwarza digits cyfr w formacie wykładniczy.Końcowe zera można pominąć w wyniku konwersji.

W języku C++ za pomocą tej funkcji jest uproszczona poprzez przeciążenie szablonu; przeciążenia mogą wywnioskować strony długość buforu automatycznie, eliminując konieczność należy określić argument rozmiar.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.

Wersja programu debug tej funkcji po raz pierwszy wypełnia bufor 0xFD.Aby wyłączyć to zachowanie, należy użyć _CrtSetDebugFillThreshold.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

Opcjonalne nagłówka

_gcvt_s

<stdlib.h>

<error.h>

Informacji dotyczących zgodności, zobacz Zgodność we wprowadzeniu.

Przykład

// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main()
{
  char buf[_CVTBUFSIZE];
  int decimal;
  int sign;
  int err;

  err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);
  
  if (err != 0)
  {
     printf("_gcvt_s failed with error code %d\n", err);
     exit(1);
  }

  printf("Converted value: %s\n", buf);  
  
}
  

Odpowiednik w programie .NET Framework

ToString

Zobacz też

Informacje

Konwersja danych

Wsparcie zmiennoprzecinkowe

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_fcvt_s

_gcvt