_ecvt_s
Konvertiert eine double Zahl in eine Zeichenfolge.Dies ist eine Version von _ecvt mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.
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
Parameter
[out] _Buffer
Wird mit dem Zeiger auf die Zeichenfolge von Ziffern, das Ergebnis der Konvertierung.[in] _SizeInBytes
Größe des Puffers in Byte.[in] _Value
Der zu konvertierende Zahl.[in] _Count
Anzahl von Ziffern gespeichert.[out] _Dec
Gespeicherte Kommastellung.[out] _Sign
Anzahl der konvertierten 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.Weitere Informationen 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 |
_Dec |
_Sign |
Rückgabewert |
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
_ecvt_s kann eine Zugriffsverletzung generiert, wenn buffer sich nicht auf den gültigen Arbeitsspeicher wird und nicht NULList.
Hinweise
Die _ecvt_s-Funktion konvertiert eine Gleitkommazahl in eine Zeichenfolge.Der Parameter ist _Value die zu konvertierende Gleitkommazahl.Diese Funktion speichert bis zu count Ziffern von _Value als Zeichenfolge und fügt ein NULL-Zeichen („\ 0 ").Wenn die Anzahl der Ziffern in _Value_Countüberschreitet, wird die niedrige Zahl aufgerundet.Wenn weniger Ziffern als count 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, der die Position des Dezimaltrennzeichens in Bezug auf den Anfang der Zeichenfolge gibt.0 oder negativer ganzzahliger Wert gibt an, dass das Dezimaltrennzeichen links vom ersten Stelle befindet.Der _Sign-Parameter zeigt auf eine ganze Zahl, die das Vorzeichen der konvertierten Zahl angibt.Wenn der ganzzahlige Wert 0 ist, wird die Zahl positiv.Andernfalls ist die Zahl negativ.
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, während _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 |
---|---|---|
_ecvt_s |
<stdlib.h> |
<errno.h> |
Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.
Beispiel
// 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);
}