_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_errlistund _sys_nerr.errno

Fehlerbedingungen

buffer sizeInBytes value digits Return Wert in buffer.
NULL Beliebig Beliebig Beliebig EINVAL Nicht geändert.
Nicht NULL (zeigt gültigen Speicher an) null Beliebig Beliebig EINVAL Nicht geändert.
Nicht NULL (zeigt gültigen Speicher an) Beliebig Beliebig >= 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 "Sichere Vorlagenüberladungen".

Die Debugversion dieser Funktion füllt zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThresholdzum Deaktivieren dieses Verhaltens .

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the 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 und Gleitkommaunterstützung
atof, _atof_l, _wtof, _wtof_l
_ecvt_s
_fcvt_s
_gcvt