Freigeben über


_fcvt_s

Konvertiert eine Gleitkommazahl zu einer Zeichenfolge. Dies ist eine Version von _fcvt mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.

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 angegebenen Puffer, der das Ergebnis der Konvertierung enthält.

  • [in] sizeInBytes
    Die Größe des Puffers in Bytes.

  • [in] value
    Zu konvertierende Zahl.

  • [in] count
    Anzahl der Ziffern nach dem Dezimalkomma.

  • [out] dec
    Zeiger zur gespeicherten Kommastellung.

  • [out] sign
    Zeiger zum gespeicherten Zeichenindikator.

Rückgabewert

Null wenn erfolgreich. Der Rückgabewert ist ein Fehlercode, wenn ein Fehler auftritt. Fehlercodes werden in Errno.h definiert. Eine Liste dieser Fehler, finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Bei einer ungültigen Parameters, wie in der folgenden Tabelle aufgeführt, ruft diese Funktion den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, legt diese Funktion errno auf EINVAL fest und gibt EINVAL zurück.

Fehlerbedingungen

buffer

sizeInBytes

Wert

count

Dezember

sign

Return

Wert in buffer

NULL

any

any

any

any

any

EINVAL

Nicht geändert.

Nicht NULL (Punkte zum gültigen Arbeitsspeicher)

<=0

any

any

any

any

EINVAL

Nicht geändert.

any

any

any

any

NULL

any

EINVAL

Nicht geändert.

any

any

any

any

any

NULL

EINVAL

Nicht geändert.

Sicherheitsprobleme

_fcvt_s generierte kann eine Zugriffsverletzung, wenn buffer nicht auf gültigen Arbeitsspeicher wird und nicht NULL ist.

Hinweise

Die _fcvt_s-Funktion konvertiert eine Gleitkommazahl zu einer auf NULL endende Zeichenfolge. Der value-Parameter ist die zu konvertierende, Gleitkommazahl. _fcvt_s speichert die Ziffern von value als Zeichenfolge und fügt an ein NULL-Zeichen ("\ 0 "). Der count-Parameter gibt die Anzahl der nach dem Dezimaltrennzeichen an zu speichernden Ziffern. Überschüssige Ziffern werden count weg zu Stellen gerundet. Wenn es weniger als count Ziffern von Genauigkeit gibt, wird die Zeichenfolge durch Nullen ergänzt.

Nur Ziffern sind in der Zeichenfolge gespeichert. Die Position des Dezimaltrennzeichens und das Zeichen von 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 negative ganzzahliger Wert gibt an, dass das Dezimaltrennzeichen auf der linken Seite die erste Ziffer liegt. Der Parameter sign zeigt auf eine ganze Zahl, die das Zeichen von value angibt. Die ganze Zahl wird 0 festgelegt, wenn value gleich ist und wird auf 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 Parameters count. _ecvt_s interpretiert count, während die Gesamtzahl der Stellen in der Ausgabezeichenfolge und c _fcvt_sount als Anzahl von Ziffern nach dem Dezimaltrennzeichen interpretiert.

In C++ unter Verwendung dieser Funktion wird durch eine Vorlagenüberladung vereinfacht; Überladung kann automatisch die Pufferlänge ableiten und die Anforderung nicht, einen Größenargument anzugeben. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Die Debugversion dieser Funktion wird zuerst den Puffer mit 0xFD aus. Mit _CrtSetDebugFillThreshold deaktivieren Sie dieses Verhalten.

Anforderungen

Funktion

Erforderlicher Header

Optionaler Header

_fcvt_s

<stdlib.h>

<errno.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Bibliotheken: Alle Versionen der CRT-Bibliotheksfunktionen.

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);  
  
}
  

.NET Framework-Entsprechung

ToString

Siehe auch

Referenz

Datenkonvertierung

Gleitkommaunterstützung

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_gcvt_s

_fcvt