_cprintf, _cprintf_l, _cwprintf, _cwprintf_l

Formatta e stampa nella console. Sono disponibili versioni più sicure; vedere _cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l.

Importante

Non è possibile usare questa API nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).

Sintassi

int _cprintf(
   const char * format [, argument_list]
);
int _cprintf_l(
   const char * format,
   _locale_t locale [, argument_list]
);
int _cwprintf(
   const wchar * format [, argument_list]
);
int _cwprintf_l(
   const wchar * format,
   _locale_t locale [, argument_list]
);

Parametri

format
Stringa di controllo del formato.

argument_list
Parametri facoltativi per la stringa di formato.

locale
Impostazioni locali da usare.

Valore restituito

Numero di caratteri stampati.

Osservazioni:

Queste funzioni formattano e stampano una serie di caratteri e valori direttamente sulla console, usando la funzione _putch (_putwch per _cwprintf) per i caratteri di output. Ogni argomento in argument_list (se presente) viene convertito e restituito in base alla specifica di formato corrispondente in format. L'argomento format usa la sintassi della specifica del formato per le funzioni printf e wprintf. A differenza delle fprintffunzioni _cprintf , printfe sprintf e _cwprintf non convertono i caratteri del feed di riga in combinazioni di ritorno a capo (CR-LF) durante l'output.

Una distinzione importante è che _cwprintf visualizza i caratteri Unicode quando vengono usati in Windows. A differenza di _cprintf, _cwprintf utilizza le impostazioni locali correnti della console.

Le versioni di queste funzioni con il suffisso _l sono identiche ad eccezione per il fatto che usano il parametro delle impostazioni locali passato al posto di quelle correnti.

_cprintf convalida il parametro format. Se format è un puntatore Null, la funzione richiama il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce -1 e imposta errno su EINVAL.

Importante

Assicurarsi che format non sia una stringa definita dall'utente.

A partire da Windows 10 versione 2004 (build 19041), la printf famiglia di funzioni stampa esattamente numeri a virgola mobile rappresentabili in base alle regole I edizione Enterprise E 754 per l'arrotondamento. Nelle versioni precedenti di Windows, i numeri a virgola mobile che terminano in '5' verrebbero sempre arrotondati. I edizione Enterprise E 754 indica che devono arrotondare alla cifra pari più vicina (nota anche come "Arrotondamento del banchiere"). Ad esempio, sia printf("%1.0f", 1.5) che printf("%1.0f", 2.5) devono essere arrotondati a 2. In precedenza, 1,5 arrotonderebbe a 2 e 2,5 arrotonderebbe a 3. Questa modifica influisce solo sui numeri rappresentabili esattamente. Ad esempio, 2.35 (che, se rappresentato in memoria, è più vicino a 2,350000000000000008) continua a arrotondare fino a 2,4. L'arrotondamento eseguito da queste funzioni ora rispetta anche la modalità di arrotondamento a virgola mobile impostata da fesetround. In precedenza, l'arrotondamento ha sempre scelto FE_TONEAREST il comportamento. Questa modifica interessa solo i programmi compilati con Visual Studio 2019 versione 16.2 e successive. Per usare il comportamento di arrotondamento a virgola mobile legacy, collegarsi a legacy_stdio_float_rounding.obj.

Mapping di routine di testo generico

Routine Tchar.h _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_tcprintf _cprintf _cprintf _cwprintf
_tcprintf_l _cprintf_l _cprintf_l _cwprintf_l

Requisiti

Ciclo Intestazione obbligatoria
_cprintf, _cprintf_l <conio.h>
_cwprintf, _cwprintf_l <conio.h>

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

Esempio

// crt_cprintf.c
// compile with: /c
// This program displays some variables to the console.

#include <conio.h>

int main( void )
{
    int         i = -16,
                h = 29;
    unsigned    u = 62511;
    char        c = 'A';
    char        s[] = "Test";

    // Note that console output does not translate \n as
    // standard output does. Use \r\n instead.
    //
    _cprintf( "%d  %.4x  %u  %c %s\r\n", i, h, u, c, s );
}
-16  001d  62511  A Test

Vedi anche

I/O della console e della porta
_cscanf, _cscanf_l, _cwscanf, _cwscanf_l
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l
_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l
_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l
Sintassi della specifica del formato: printf e wprintf funzioni