_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, wenn ein Fehler auftritt. Fehlercodes werden in errno.h. Eine Auflistung dieser Fehler finden Sie unter , , _doserrno, _sys_errlistund _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 Beliebig Beliebig Beliebig Beliebig Beliebig EINVAL Nicht geändert.
Nicht NULL (zeigt gültigen Speicher an) <=0 Beliebig Beliebig Beliebig Beliebig EINVAL Nicht geändert.
Beliebig Beliebig Beliebig Beliebig NULL Beliebig EINVAL Nicht geändert.
Beliebig Beliebig Beliebig Beliebig Beliebig 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_scount 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 "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

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 und Gleitkommaunterstützung
atof, _atof_l, _wtof, _wtof_l
_ecvt_s
_gcvt_s
_fcvt