Freigeben über


_gcvt_s

Konvertiert einen Gleitkommawert in eine Zeichenfolge. Dies ist eine Version von _gcvt mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.

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

  • [out] buffer
    Puffer, um das Ergebnis der Konvertierung zu speichern.

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

  • [in] value
    Der zu konvertierende Wert.

  • [in] digits
    Anzahl der signifikanten Ziffern gespeichert.

Rückgabewert

Null wenn erfolgreich. Wenn ein Fehler aufgrund eines ungültigen Parameters (siehe folgende Tabelle für ungültige Werte), auftritt, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, wird ein Fehlercode zurückgegeben. Fehlercodes werden in Errno.h definiert. Eine Liste dieser Fehler, finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Fehlerbedingungen

buffer

sizeInBytes

value

digits

Return

Wert in buffer

NULL

any

any

any

EINVAL

Nicht geändert.

Nicht NULL (Punkte zum gültigen Arbeitsspeicher)

0 (Null)

any

any

EINVAL

Nicht geändert.

Nicht NULL (Punkte zum gültigen Arbeitsspeicher)

any

any

>= sizeInBytes

EINVAL

Nicht geändert.

Sicherheitsprobleme

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

Hinweise

Die _gcvt_s-Funktion konvertiert ein Gleitkommawert value als Zeichenfolge (die ein Dezimaltrennzeichen und ein beliebiges Zeichenbyte enthält) und die Zeichenfolge in buffer. buffer sollte so groß sein, den konvertierten Wert sowie ein NULL anzupassen, das automatisch angefügt wird. Ein Puffer der Länge _CVTBUFSIZE ist für jeden Gleitkommawert ausreichend. Wenn eine Puffergröße von digits + 1 verwendet wird, überschreibt die Funktion nicht das Ende des Puffers, daher ist sicher, einen ausreichenden Puffer für diesen Vorgang bereitzustellen. _gcvt_s versucht, digits Ziffern im Dezimalformat zu erzeugen. Wenn das nicht der Fall ist, erzeugt es digits Ziffern im exponentiellen Format. Nachfolgende Nullen in der Konvertierung können unterdrückt werden.

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

Routine

Erforderlicher Header

Optionaler Header

_gcvt_s

<stdlib.h>

<error.h>

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

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

.NET Framework-Entsprechung

ToString

Siehe auch

Referenz

Datenkonvertierung

Gleitkommaunterstützung

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_fcvt_s

_gcvt