_fcvt_s
Konwertuje liczbę zmiennoprzecinkowych na ciąg.Jest to wersja z _fcvt z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w CRT.
errno_t _fcvt_s(
char* buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
template <size_t size>
errno_t _fcvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
Parametry
[out]buffer
Podany bufor będzie zawierać wynik konwersji.[w]sizeInBytes
Rozmiar buforu w bajtach.[w]value
Liczby są konwertowane.[w]count
Liczba cyfr po przecinku.[out]dec
Wskaźnik do przechowywanych położenie przecinka dziesiętnego.[out]sign
Wskaźnik do wskaźnika przechowywane znak.
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ć listę tych błędów, 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 |
wartość |
Licznik |
grudzień |
znak |
Zwrot |
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ń
_fcvt_smoże wygenerować naruszenie zasad dostępu, jeśli buffer nie wskazuje prawidłowy pamięci i nie jest NULL.
Uwagi
_fcvt_s Funkcja konwertuje liczbę zmiennoprzecinkową ciągu zakończonego znakiem null.value Parametru jest liczba zmiennoprzecinkowa do konwersji._fcvt_sprzechowuje cyfr z value jako ciąg znaków i dołącza znak null (\0).count Parametr określa liczbę cyfr, które mają być przechowywane po separatorze dziesiętnym.Nadmiar cyfry są zaokrąglane do count miejsca.Jeżeli jest mniej niż count dokładnością, 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ą; Ta wartość całkowitą podaje położenie przecinka dziesiętnego, w odniesieniu do początku ciągu znaków.Zero lub wartość ujemną liczbą całkowitą wskazuje, że leży przecinka dziesiętnego po lewej stronie pierwszej cyfry.Parametr sign wskazuje całkowitą wskazującą znak value.Liczba całkowita jest równa 0, jeśli value jest pozytywny i jest ustawiona na różną od zera jeśli liczba value jest liczbą ujemną.
Bufor o długości _CVTBUFSIZE jest wystarczający dla żadnych przestawnych wartości.
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 i _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 |
---|---|---|
_fcvt_s |
<stdlib.h> |
<errno.h> |
Informacji dotyczących zgodności, zobacz Zgodność we wprowadzeniu.
Biblioteki: wszystkie wersje Biblioteka CRT — Funkcje.
Przykład
// fcvt_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 = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
if (err != 0)
{
printf("_fcvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}