_fcvt_s
Konvertiert eine Gleitkommazahl in eine Zeichenfolge. Diese Funktion ist eine Version von _fcvt
Sicherheitsverbesserungen, wie in den Sicherheitsfeatures im CRT beschrieben.
Syntax
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
Parameter
buffer
Der angegebene Puffer, der das Ergebnis der Konvertierung enthält.
sizeInBytes
Die Größe des Puffers in Byte.
value
Zu konvertierende Zahl.
count
Anzahl der Ziffern nach dem Dezimaltrennzeichen.
dec
Zeiger auf die gespeicherte Position der Dezimalstelle.
sign
Zeiger auf den gespeicherten Zeichen-Indikator.
Rückgabewert
Null, wenn erfolgreich. Der Rückgabewert ist ein Fehlercode, falls ein Fehler auftritt. Fehlercodes werden in errno.h
. Eine Auflistung dieser Fehler finden Sie unter , , _doserrno
, _sys_errlist
und _sys_nerr
.errno
Wenn ein ungültiger Parameter vorhanden ist, wie in der folgenden Tabelle aufgeführt, ruft diese Funktion den ungültigen Parameterhandler auf, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, legt diese Funktion errno
auf EINVAL
fest und gibt EINVAL
zurück.
Fehlerbedingungen
buffer |
sizeInBytes |
value |
count |
dec |
sign |
Return | Wert in buffer . |
---|---|---|---|---|---|---|---|
NULL |
any | Beliebig | Beliebig | Beliebig | any | EINVAL |
Nicht geändert. |
Nicht NULL (zeigt gültigen Speicher an) |
<=0 | any | Beliebig | Beliebig | any | EINVAL |
Nicht geändert. |
any | Beliebig | Beliebig | Beliebig | NULL |
any | EINVAL |
Nicht geändert. |
any | Beliebig | Beliebig | Beliebig | any | NULL |
EINVAL |
Nicht geändert. |
Sicherheitsprobleme
_fcvt_s
kann einen Zugriffsverstoß generieren, wenn buffer
er nicht auf gültigen Speicher verweist und nicht NULL
.
Hinweise
Mit der _fcvt_s
-Funktion werden Gleitkommazahlen in mit NULL endende Zeichenfolgen konvertiert. Der Parameter value
ist die zu konvertierende Gleitkommazahl. _fcvt_s
speichert die Ziffern von value
als Zeichenfolge, und fügt das Zeichen NULL ('\0') an. Der count
-Parameter gibt die Anzahl der zu speichernden Ziffern nach dem Dezimaltrennzeichen an. Überschüssige Ziffern werden auf count
Stellen gerundet. Wenn weniger als count
Dezimalstellen vorhanden sind, wird die Zeichenfolge mit Nullen aufgefüllt.
In der Zeichenfolge werden nur Ziffern gespeichert. Die Position der Dezimalstelle und das Vorzeichen von value
können nach dem Aufruf aus dec
und sign
abgerufen werden. Der Parameter dec
zeigt auf einen ganzzahligen Wert; dieser ganzzahlige Wert gibt die Position der Dezimalstelle im Verhältnis zum Anfang der Zeichenfolge an. Der Wert null oder ein negativer ganzzahliger Wert geben an, dass sich die Dezimalstelle links neben der ersten Ziffer befindet. Der Parameter sign
verweist auf eine ganze Zahl, die das Vorzeichen von value
angibt. Die ganze Zahl ist auf 0 festgelegt, wenn value
positiv ist, und ist auf eine Zahl ungleich null festgelegt, wenn value
negativ ist.
Ein Puffer der Länge _CVTBUFSIZE
reicht für alle Gleitkommawerte aus.
_ecvt_s
und _fcvt_s
unterscheiden sich hinsichtlich der Interpretation des Parameters count
. _ecvt_s
count
interpretiert die Gesamtzahl der Ziffern in der Ausgabezeichenfolge und _fcvt_s
interpretiert count
sie als Die Anzahl der Ziffern nach dem Dezimalkomma.
Die Verwendung dieser Funktion in C++ wird durch eine Vorlagenüberladung vereinfacht. Eine Überladung kann automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter Secure Template Overloads.
Die Debugversion dieser Funktion füllt zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThreshold
zum Deaktivieren dieses Verhaltens .
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Anforderungen
Funktion | Erforderlicher Header | Optionaler Header |
---|---|---|
_fcvt_s |
<stdlib.h> | <errno.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Bibliotheken: Alle Versionen der C-Laufzeitbibliotheken.
Beispiel
// 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);
}
Converted value: 120000
Siehe auch
Datenkonvertierung
Mathematische Unterstützung und Gleitkommaunterstützung
atof
, , _atof_l
_wtof
_wtof_l
_ecvt_s
_gcvt_s
_fcvt