Freigeben über


_ecvt_s

Konvertiert eine double Zahl in eine Zeichenfolge.Dies ist eine Version von _ecvt mit unter Security Enhancements, wie in Sicherheitsfeatures im CRTbeschrieben.

errno_t _ecvt_s( 
   char * _Buffer,
   size_t _SizeInBytes,
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
);
template <size_t size>
errno_t _ecvt_s( 
   char (&_Buffer)[size],
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
); // C++ only

Parameter

  • [out] _Buffer
    Wird mit dem Zeiger auf die Zeichenfolge von Ziffern, das Ergebnis der Konvertierung.

  • [in] _SizeInBytes
    Größe des Puffers in Byte.

  • [in] _Value
    Der zu konvertierende Zahl.

  • [in] _Count
    Anzahl von Ziffern gespeichert.

  • [out] _Dec
    Gespeicherte Kommastellung.

  • [out] _Sign
    Anzahl der konvertierten Zeichen.

Rückgabewert

Beliebige wenn der Vorgang erfolgreich war.Der Rückgabewert ist ein Fehlercode, wenn ein Fehler auftritt.Fehlercodes werden in Errno.h definiert.Weitere Informationen finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Im Falle eines ungültigen Parameters, wie in der folgenden Tabelle aufgeführt, ruft diese Funktion auf der ungültige Parameter für, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt diese Funktion errno legt diesen fest EINVAL und EINVALzurück.

Fehlerbedingungen

_Buffer

_SizeInBytes

_Value

_Count

_Dec

_Sign

Rückgabewert

Wert in buffer

NULL

alle

alle

alle

alle

alle

EINVAL

Nicht geändert.

Nicht NULL (Zeigt auf den gültigen Arbeitsspeicher)

<=0

alle

alle

alle

alle

EINVAL

Nicht geändert.

alle

alle

alle

alle

NULL

alle

EINVAL

Nicht geändert.

alle

alle

alle

alle

alle

NULL

EINVAL

Nicht geändert.

Sicherheitsprobleme

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

Hinweise

Die _ecvt_s-Funktion konvertiert eine Gleitkommazahl in eine Zeichenfolge.Der Parameter ist _Value die zu konvertierende Gleitkommazahl.Diese Funktion speichert bis zu count Ziffern von _Value als Zeichenfolge und fügt ein NULL-Zeichen („\ 0 ").Wenn die Anzahl der Ziffern in _Value_Countüberschreitet, wird die niedrige Zahl aufgerundet.Wenn weniger Ziffern als count vorhanden ist, wird die Zeichenfolge mit Nullen aufgefüllt.

Nur Ziffern sind in der Zeichenfolge gespeichert.Die Position des Dezimaltrennzeichens und das Zeichen aus _Value können von _Dec und _Sign nach dem Aufruf abgerufen werden.Der _Dec-Parameter zeigt auf einen ganzzahligen Wert, der die Position des Dezimaltrennzeichens in Bezug auf den Anfang der Zeichenfolge gibt.0 oder negativer ganzzahliger Wert gibt an, dass das Dezimaltrennzeichen links vom ersten Stelle befindet.Der _Sign-Parameter zeigt auf eine ganze Zahl, die das Vorzeichen der konvertierten Zahl angibt.Wenn der ganzzahlige Wert 0 ist, wird die Zahl positiv.Andernfalls ist die Zahl negativ.

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 _Count-Parameters._ecvt_s interpretiert _Count während die Gesamtanzahl der Ziffern in der Ausgabezeichenfolge, während _fcvt_s_Count als die Anzahl der Stellen nach dem Dezimalkomma interpretiert.

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

Funktion

Erforderlicher Header

Optionaler Header

_ecvt_s

<stdlib.h>

<errno.h>

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

Beispiel

// ecvt_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 = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_ecvt_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

_fcvt_s

_gcvt_s