_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. Wenn buffer
den Wert NULL
annimmt, wird der Handler für ungültige Parameter aufgerufen, wie in Parameter Validation. 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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der 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 Unterstützung und Gleitkommaunterstützung
atof
, , _atof_l
_wtof
_wtof_l
_ecvt
_fcvt