_gcvt_s

Konvertiert eine Gleitkommazahl in eine Zeichenfolge.Dies ist eine Version von _gcvt mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.

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, in dem 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

Beliebige wenn der Vorgang erfolgreich war.Wenn ein Fehler aufgrund eines ungültigen Parameters (finden Sie in der folgenden Tabelle für ungültige Werte), ungültige Parameter auftritt, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird ein Fehlercode zurückgegeben.Fehlercodes werden in Errno.h definiert.Eine Liste dieser Fehler ausgelöst wird, finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Fehlerbedingungen

buffer

sizeInBytes

value

digits

Return

Wert in buffer

NULL

alle

alle

alle

EINVAL

Nicht geändert.

Nicht NULL (Zeigt auf den gültigen Arbeitsspeicher)

0 (Null)

alle

alle

EINVAL

Nicht geändert.

Nicht NULL (Zeigt auf den gültigen Arbeitsspeicher)

alle

alle

>= sizeInBytes

EINVAL

Nicht geändert.

Sicherheitsprobleme

_gcvt_s kann eine Zugriffsverletzung generiert wird, sobald buffer sich nicht auf den gültigen Arbeitsspeicher wird und nicht NULList.

Hinweise

Die _gcvt_s-Funktion value float konvertiert in eine Zeichenfolge und ein Dezimaltrennzeichen (byte) umfasst ein beliebiges Zeichen und speichert die Zeichenfolge in buffer.buffer muss groß genug sein, den konvertierten Wert NULL aufweist, das ein positiver 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. Dies ist darauf, einen ausreichenden Puffer für diesen Vorgang zu erzeugen._gcvt_s versucht, digits Ziffern im Dezimalformat zu erzeugen.Wenn dies nicht darf, erzeugt er digits Ziffern im exponentiellen Format.Nachgestellte Nullen können in der Konvertierung unterdrückt werden.

In C++ unter Verwendung dieser Funktion wird durch eine Vorlagen Überladung vereinfacht. Überladung kann die Pufferlänge automatisch ableiten, und die Anforderung ein Größen - Argument angegeben wird.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Die Debugversion dieser Funktion wird zuerst den Puffer mit 0xFD aus.Um dieses Verhalten zu deaktivieren, verwenden Sie _CrtSetDebugFillThreshold.

Anforderungen

Routine

Erforderlicher Header

Optionaler Header

_gcvt_s

<stdlib.h>

<error.h>

Weitere Informationen finden Sie unter Kompatibilität 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