_gcvt

Konvertiert einen Gleitkommawert in eine Zeichenfolge, die in einem Puffer gespeichert wird. Eine sicherere Version dieser Funktion ist verfügbar; siehe _gcvt_s.

Syntax

char *_gcvt(
   double value,
   int digits,
   char *buffer
);

Parameter

value
Zu konvertierender Wert.

digits
Anzahl der gespeicherten signifikanten Ziffern.

buffer
Speicherort für das Ergebnis.

Rückgabewert

_gcvt gibt einen Zeiger zur Zeichenfolge der Ziffern zurück.

Hinweise

Die _gcvt Funktion konvertiert ein Gleitkomma value in eine Zeichenfolge (mit einem Dezimaltrennzeichen und ein mögliches Zeichen-Byte) und speichert die Zeichenfolge in buffer. Der buffer sollte groß genug für den konvertierten Wert und ein abschließendes Zeichen NULL sein, das automatisch angefügt wird. Wenn eine Puffergröße digits + 1 verwendet wird, überschreibt die Funktion das Pufferende. Die Überschreibung erfolgt, da die konvertierte Zeichenfolge einen Dezimalkomma enthält und auch Zeichen- und Exponenteninformationen enthalten kann. Die Funktion berücksichtigt nicht den Überlauf. _gcvt versucht digits-Ziffern im Dezimalformat zu erzeugen. Wenn dies nicht möglich ist, werden Ziffern im exponentiellen Format erzeugt digits . Bei der Konvertierung können Nachstellen von Nullen unterdrückt werden.

Ein buffer der Länge _CVTBUFSIZE reicht für alle Gleitkommawerte aus.

Diese Funktion überprüft ihre Parameter. Ist buffer dies NULLder Fehler, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, legt diese Funktion errno auf EINVAL fest und gibt NULL zurück.

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

Routine Erforderlicher Header
_gcvt <stdlib.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_gcvt.c
// compile with: /W3
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main( void )
{
   char buffer[_CVTBUFSIZE];
   double value = -1234567890.123;
   printf( "The following numbers were converted by _gcvt(value,12,buffer):\n" );
   _gcvt( value, 12, buffer ); // C4996
   // Note: _gcvt is deprecated; consider using _gcvt_s instead
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value *= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value *= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value *= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );

   printf( "\n" );
   value = -12.34567890123;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value /= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value /= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value /= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}
The following numbers were converted by _gcvt(value,12,buffer):
buffer: '-1234567890.12' (14 chars)
buffer: '-12345678901.2' (14 chars)
buffer: '-123456789012' (13 chars)
buffer: '-1.23456789012e+012' (19 chars)

buffer: '-12.3456789012' (14 chars)
buffer: '-1.23456789012' (14 chars)
buffer: '-0.123456789012' (15 chars)
buffer: '-1.23456789012e-002' (19 chars)

Siehe auch

Datenkonvertierung
Mathematische und Gleitkommaunterstützung
atof, _atof_l, _wtof, _wtof_l
_ecvt
_fcvt