_gcvt_s
Konvertiert einen Gleitkommawert in eine Zeichenfolge. Diese Funktion ist eine Version mit _gcvt
Sicherheitsverbesserungen, wie in den Sicherheitsfeatures im CRT beschrieben.
Syntax
errno_t _gcvt_s(
char *buffer,
size_t sizeInBytes,
double value,
int digits
);
template <size_t cchStr>
errno_t _gcvt_s(
char (&buffer)[cchStr],
double value,
int digits
); // C++ only
Parameter
buffer
Puffer, um das Ergebnis der Konvertierung zu speichern
sizeInBytes
Größe des Puffers.
value
Zu konvertierender Wert.
digits
Anzahl der gespeicherten signifikanten Ziffern.
Rückgabewert
Null, wenn erfolgreich. Wenn ein Fehler aufgrund eines ungültigen Parameters auftritt (siehe die folgende Tabelle für ungültige Werte), wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, wird ein Fehlercode zurückgegeben. Fehlercodes sind in Errno.h definiert. Eine Auflistung dieser Fehler finden Sie unter , , _doserrno
, _sys_errlist
und _sys_nerr
.errno
Fehlerbedingungen
buffer |
sizeInBytes |
value |
digits |
Return | Wert in buffer . |
---|---|---|---|---|---|
NULL |
any | Beliebig | any | EINVAL |
Nicht geändert. |
Nicht NULL (zeigt gültigen Speicher an) |
null | any | any | EINVAL |
Nicht geändert. |
Nicht NULL (zeigt gültigen Speicher an) |
any | any | >= sizeInBytes |
EINVAL |
Nicht geändert. |
Sicherheitsprobleme
_gcvt_s
kann einen Zugriffsverstoß generieren, wenn buffer
er nicht auf gültigen Speicher verweist und nicht NULL
.
Hinweise
Die _gcvt_s
Funktion konvertiert ein Gleitkomma value
in eine Zeichenfolge (mit einem Dezimaltrennzeichen und ein mögliches Zeichen-Byte) und speichert die Zeichenfolge in buffer
. buffer
sollte groß genug für den konvertierten Wert und ein abschließendes Zeichen NULL sein, das automatisch angefügt wird. Ein Puffer der Länge _CVTBUFSIZE
reicht für alle Gleitkommawerte aus. Wenn eine Puffergröße von digits
+ 1 verwendet wird, überschreibt die Funktion nicht das Ende des Puffers. Achten Sie daher darauf, einen ausreichenden Puffer für diesen Vorgang zu liefern. _gcvt_s
versucht digits
-Ziffern im Dezimalformat zu erzeugen. Wenn dies nicht möglich ist, werden Ziffern im exponentiellen Format erzeugt digits
. Bei der Konvertierung können Nachstellen von Nullen unterdrückt werden.
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
Routine | Erforderlicher Header | Optionaler Header |
---|---|---|
_gcvt_s |
<stdlib.h> | <error.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
{
char buf[_CVTBUFSIZE];
int decimal;
int sign;
int err;
err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);
if (err != 0)
{
printf("_gcvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}
Converted value: 1.2
Siehe auch
Datenkonvertierung
Mathematische Unterstützung und Gleitkommaunterstützung
atof
, , _atof_l
_wtof
_wtof_l
_ecvt_s
_fcvt_s
_gcvt