Condividi tramite


_gcvt

Converte un valore a virgola mobile in una stringa, che viene archiviata in un buffer. È disponibile una versione più sicura di questa funzione; vedere _gcvt_s.

Sintassi

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

Parametri

value
Valore da convertire.

digits
Numero di cifre significative archiviate.

buffer
Posizione di archiviazione per il risultato.

Valore restituito

_gcvt restituisce un puntatore alla stringa di cifre.

Osservazioni:

La funzione _gcvt converte un elemento value a virgola mobile in una stringa di caratteri (che include un separatore decimale e un possibile byte del segno) e archivia la stringa in buffer. buffer deve essere sufficientemente grande da contenere il carattere convertito oltre a un carattere Null di terminazione, che viene aggiunto automaticamente. Se viene usata una dimensione del buffer pari a digits + 1, la funzione sovrascrive la fine del buffer. La sovrascrittura si verifica perché la stringa convertita include un separatore decimale e può contenere anche informazioni sul segno e sull'esponente. La funzione non tiene conto dell'overflow. _gcvt tenta di produrre un numero di cifre pari a digits in formato decimale. In caso contrario, produce digits cifre in formato esponenziale. Gli zeri finali possono essere eliminati nella conversione.

Un buffer di lunghezza _CVTBUFSIZE è sufficiente per qualsiasi valore a virgola mobile.

Questa funzione convalida i relativi parametri. Se buffer è NULL, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione imposta errno suEINVAL e restituisce NULL.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione obbligatoria
_gcvt <stdlib.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

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) );
}
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)

Vedi anche

Conversione dati
Supporto matematico e a virgola mobile
atof, _atof_l, _wtof_wtof_l
_ecvt
_fcvt