_ecvt_s

Konwertuje double numer na ciąg.Jest to wersja z _ecvt z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.

errno_t _ecvt_s( 
   char * _Buffer,
   size_t _SizeInBytes,
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
);
template <size_t size>
errno_t _ecvt_s( 
   char (&_Buffer)[size],
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
); // C++ only

Parametry

  • [out]_Buffer
    Wypełniona wskaźnik, aby ciąg cyfr, wynik konwersji.

  • [w]_SizeInBytes
    Rozmiar buforu w bajtach.

  • [w]_Value
    Liczby są konwertowane.

  • [w]_Count
    Liczba cyfr przechowywane.

  • [out]_Dec
    Przechowywane położenie przecinka dziesiętnego.

  • [out]_Sign
    Znak liczby przekonwertowane.

Wartość zwracana

Zero, jeśli kończy się pomyślnie.Wartość zwracana jest kod błędu, jeśli wystąpi awaria.Kody błędów są zdefiniowane w errno.Aby uzyskać więcej informacji, zobacz errno, _doserrno, _sys_errlist, and _sys_nerr.

W odniesieniu do nieprawidłowy parametr, jak wymieniono w poniższej tabeli ta funkcja wywołuje obsługi nieprawidłowy parametr zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ta funkcja ustawia errno do EINVAL i zwraca EINVAL.

Warunki błędów

_Buffer

_SizeInBytes

_Value

_Count

_Dec

_Sign

Zwracanie wartości

Wartośćbuffer

NULL

wszelkie

wszelkie

wszelkie

wszelkie

wszelkie

EINVAL

Nie jest modyfikowany.

Nie NULL (wskazuje prawidłowy pamięci)

< = 0

wszelkie

wszelkie

wszelkie

wszelkie

EINVAL

Nie jest modyfikowany.

wszelkie

wszelkie

wszelkie

wszelkie

NULL

wszelkie

EINVAL

Nie jest modyfikowany.

wszelkie

wszelkie

wszelkie

wszelkie

wszelkie

NULL

EINVAL

Nie jest modyfikowany.

Problemy dotyczące zabezpieczeń

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

Uwagi

_ecvt_s Funkcja konwertuje liczbę zmiennoprzecinkową na ciąg znaków._Value Parametru jest liczba zmiennoprzecinkowa do konwersji.Funkcja ta przechowuje się do count cyfry _Value jako ciąg znaków i dołącza znak null (\0).Jeśli liczba cyfr w _Value przekracza _Count, siódmy cyfra jest zaokrąglana.Jeżeli jest mniej niż count ciąg cyfr jest uzupełniony zerami.

Tylko cyfry są przechowywane w ciągu.Położenie przecinka dziesiętnego i znak _Value , można otrzymać od _Dec i _Sign po wywołaniu._Dec Parametru wskazuje wartość całkowitą, podając położenie przecinka dziesiętnego, w odniesieniu do początku ciągu znaków.Wartość 0 lub ujemna liczba całkowita wskazuje, że leży przecinka dziesiętnego po lewej stronie pierwszej cyfry._Sign Parametru wskazuje całkowitą, która wskazuje na znak liczby przekonwertowane.Jeśli wartość całkowitą 0, liczba jest dodatnia.W przeciwnym razie liczba jest ujemna.

Bufor o długości _CVTBUFSIZE jest wystarczający dla wartości zmiennoprzecinkowe.

Różnica między _ecvt_s i _fcvt_s jest w interpretacji _Count parametru._ecvt_sinterpretuje _Count jako całkowita liczba cyfr w ciągu danych wyjściowych, dlatego _fcvt_s interpretuje _Count jako liczba cyfr po przecinku.

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 Przeciążenia bezpiecznych szablonów.

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

Wymagania

Funkcja

Wymaganego nagłówka

Opcjonalne nagłówka

_ecvt_s

<stdlib.h>

<errno.h>

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

Przykład

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

int main( )
{
  char * buf = 0;
  int decimal;
  int sign;
  int err;

  buf = (char*) malloc(_CVTBUFSIZE);
  err = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_ecvt_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

Obsługa liczb zmiennoprzecinkowych

atof, _atof_l, _wtof, _wtof_l

_ecvt

_fcvt_s

_gcvt_s