_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 NULL
der 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für