_fcvt_s
Konvertiert eine Gleitkommazahl in eine Zeichenfolge.Dies ist eine Version von _fcvt mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.
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
[out] buffer
Der angegebene Puffer, der das Ergebnis der Konvertierung enthält.[in] sizeInBytes
Die Größe des Puffers in Byte.[in] value
Der zu konvertierende Zahl.[in] count
Anzahl der Ziffern nach dem Dezimalkomma.[out] dec
Zeiger auf die gespeicherten Kommastellung.[out] sign
Zeiger auf den Indikator gespeicherten Zeichen.
Rückgabewert
Beliebige wenn der Vorgang erfolgreich war.Der Rückgabewert ist ein Fehlercode, wenn ein Fehler auftritt.Fehlercodes werden in Errno.h definiert.Eine Liste dieser Fehler ausgelöst wird, finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.
Im Falle eines ungültigen Parameters, wie in der folgenden Tabelle aufgeführt, ruft diese Funktion auf der ungültige Parameter für, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt diese Funktion errno legt diesen fest EINVAL und EINVALzurück.
Fehlerbedingungen
buffer |
sizeInBytes |
value |
count |
Dezember |
sign |
Return |
Wert in buffer |
---|---|---|---|---|---|---|---|
NULL |
alle |
alle |
alle |
alle |
alle |
EINVAL |
Nicht geändert. |
Nicht NULL (Zeigt auf den gültigen Arbeitsspeicher) |
<=0 |
alle |
alle |
alle |
alle |
EINVAL |
Nicht geändert. |
alle |
alle |
alle |
alle |
NULL |
alle |
EINVAL |
Nicht geändert. |
alle |
alle |
alle |
alle |
alle |
NULL |
EINVAL |
Nicht geändert. |
Sicherheitsprobleme
_fcvt_s kann eine Zugriffsverletzung generiert, wenn buffer sich nicht auf den gültigen Arbeitsspeicher wird und nicht NULList.
Hinweise
Die _fcvt_s-Funktion konvertiert eine Gleitkommazahl auf eine auf NULL endende Zeichenfolge.Der Parameter ist value die zu konvertierende Gleitkommazahl._fcvt_s speichert die Ziffern von value als Zeichenfolge und fügt ein NULL-Zeichen („\ 0 ").Der count-Parameter gibt die Anzahl der nach dem Dezimalkomma an Ziffern gespeichert werden soll.Überschüssige Ziffern gerundet werden count Stellen zu deaktivieren.Wenn weniger Ziffern als count der Genauigkeit vorhanden ist, wird die Zeichenfolge mit Nullen aufgefüllt.
Nur Ziffern sind in der Zeichenfolge gespeichert.Die Position des Dezimaltrennzeichens und das Zeichen aus value können von dec und sign nach dem Aufruf abgerufen werden.Der dec-Parameter zeigt auf einen ganzzahligen Wert. dieser ganzzahlige Wert gibt die Position des Dezimaltrennzeichens in Bezug auf den Anfang der Zeichenfolge.Ein null oder negativer ganzzahliger Wert gibt an, dass das Dezimaltrennzeichen links vom ersten Stelle befindet.Der Parameter sign zeigt auf eine ganze Zahl, die das Vorzeichen von valueangibt.Die ganze Zahl wird auf 0 festgelegt, wenn value positiv ist, und wird in eine Zahl ungleich 0 (null) festgelegt, wenn value negativ ist.
Ein Puffer der Länge _CVTBUFSIZE ist für jeden Gleitkommawert ausreichend.
Der Unterschied zwischen _ecvt_s und _fcvt_s ist in der Interpretation des count-Parameters._ecvt_s interpretiert count , während die Gesamtanzahl der Ziffern in der Ausgabezeichenfolge und _fcvt_s count als die Anzahl der Stellen nach dem Dezimalkomma interpretiert.
In C++ unter Verwendung dieser Funktion wird durch eine Vorlagen Überladung vereinfacht. Überladung kann die Pufferlänge automatisch ableiten, und die Anforderung ein Größen - Argument angegeben wird.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.
Die Debugversion dieser Funktion wird zuerst den Puffer mit 0xFD aus.Um dieses Verhalten zu deaktivieren, verwenden Sie _CrtSetDebugFillThreshold.
Anforderungen
Funktion |
Erforderlicher Header |
Optionaler Header |
---|---|---|
_fcvt_s |
<stdlib.h> |
<errno.h> |
Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.
Bibliotheken: Alle Versionen CRT-Bibliotheks-Funktionen.
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);
}