_gcvt
Converte un valore in virgola mobile in una stringa, che sono memorizzate in un buffer. È disponibile una versione più sicura di questa funzione; consultare _gcvt_s.
char *_gcvt(
double value,
int digits,
char *buffer
);
Parametri
value
Valore da convertire.digits
Numero di cifre significative archiviate.buffer
Percorso di archiviazione per il risultato.
Valore restituito
_gcvt restituisce un puntatore alla stringa di cifre.
Note
La funzione _gcvt converte un value in virgola mobile in una stringa di caratteri (che include un separatore decimale e un possibile byte di segno) e archivia la stringa in buffer. Il buffer deve essere grande a sufficienza per contenere il valore convertito più un carattere di terminazione null, che viene aggiunto automaticamente. Se viene utilizzata la dimensione del buffer digits + 1, la funzione sovrascrive la fine del buffer. Questo perché la stringa convertita include un separatore decimale e può contenere le informazioni sull'esponente ed il segno. Non esiste alcuna operazione di overflow. _gcvt tenta di generare le cifre digits in formato decimale. Se non è possibile, produce le cifre digits in formato esponenziale. Gli zeri finali potrebbero essere eliminati nella conversione.
Un buffer buffer di lunghezza _CVTBUFSIZE è sufficiente per qualsiasi valore in virgola mobile.
Questa funzione convalida i parametri. Se buffer è NULL, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione imposta errno e imposta EINVAL su NULL.
Requisiti
Routine |
Intestazione obbligatoria |
---|---|
_gcvt |
<stdlib.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
Esempio
// 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) );
}