_gcvt
Konvertiert einen Gleitkommawert in eine Zeichenfolge, die es in einem Puffer gespeichert werden. Eine sicherere Version dieser Funktion ist verfügbar; finden Sie unter _gcvt_s.
char *_gcvt(
double value,
int digits,
char *buffer
);
Parameter
value
Der zu konvertierende Wert.digits
Anzahl der signifikanten Ziffern gespeichert.buffer
Speicherort für das Ergebnis.
Rückgabewert
_gcvt gibt einen Zeiger zur Zeichenfolge aus Ziffern zurück.
Hinweise
Die _gcvt-Funktion konvertiert ein Gleitkommawert value als Zeichenfolge (die ein Dezimaltrennzeichen und ein beliebiges Zeichenbyte enthält) und die Zeichenfolge in buffer. buffer sollte so groß sein, den konvertierten Wert sowie ein NULL anzupassen, das automatisch angefügt wird. Wenn eine Puffergröße von digits + 1 verwendet wird, überschreibt die Funktion das Ende des Puffers. Dies ist, da die konvertierte Zeichenfolge ein Dezimaltrennzeichen enthält und Zeichentasten und Exponenteninformationen enthalten kann. Es gibt keine Bereitstellung Überläufe. _gcvt versucht, digits Ziffern im Dezimalformat zu erzeugen. Wenn das nicht der Fall ist, erzeugt es digits Ziffern im exponentiellen Format. Nachfolgende Nullen würden in der Konvertierung unterdrückt werden.
buffer der Länge _CVTBUFSIZE ist für jeden Gleitkommawert ausreichend.
Diese Funktion überprüft ihre Parameter. Wenn buffer den Wert NULL annimmt, wird der ungültige Parameterhandler, wie in Parametervalidierung beschrieben, aufgerufen. Wenn die weitere Ausführung zugelassen wird, legt diese Funktion errno auf EINVAL fest und gibt NULL zurück.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_gcvt |
<stdlib.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
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) );
}