Share via


_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l

Stampa i dati formattati in un flusso.

Sintassi

int _fprintf_p(
   FILE *stream,
   const char *format [,
   argument ]...
);
int _fprintf_p_l(
   FILE *stream,
   const char *format,
   _locale_t locale [,
   argument ]...
);
int _fwprintf_p(
   FILE *stream,
   const wchar_t *format [,
   argument ]...
);
int _fwprintf_p_l(
   FILE *stream,
   const wchar_t *format,
   _locale_t locale [,
   argument ]...
);

Parametri

stream
Puntatore alla struttura FILE.

format
Stringa di controllo del formato.

argument
Argomenti facoltativi.

locale
Impostazioni locali da usare.

Valore restituito

_fprintf_p e _fwprintf_p restituiscono il numero di caratteri scritti o un valore negativo quando si verifica un errore di output.

Osservazioni:

La funzione _fprintf_p formatta e stampa una serie di caratteri e di valori nell'elemento di output stream. Ogni funzione argument (se presente) viene convertita e restituita in base alla specifica di formato corrispondente in format. Per _fprintf_p, l'argomento format ha la stessa sintassi di in _printf_p. Queste funzioni supportano parametri posizionali, vale a dire che l'ordine dei parametri usati dalla stringa di formato può essere modificato. Per altre informazioni sui parametri posizionali, vedere Parametri posizionali printf_p.

_fwprintf_p è una versione a caratteri wide di _fprintf_p. In _fwprintf_p, format è una stringa di caratteri wide. Queste funzioni si comportano in modo identico se il flusso viene aperto in modalità ANSI. _fprintf_p non supporta attualmente l'output in un flusso UNICODE.

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.

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".

Analogamente alle versioni non sicure (vedere fprintf, _fprintf_lfwprintf, , ), _fwprintf_lqueste funzioni convalidano i relativi parametri e richiamano il gestore di parametri non validi, come descritto in Convalida dei parametri, se stream o format è un puntatore Null o se sono presenti identificatori di formattazione sconosciuti o non validi. Se l'esecuzione può continuare, le funzioni restituiranno -1 e imposteranno errno su EINVAL.

Mapping di routine di testo generico

Routine Tchar.h _UNICODE e _MBCS non definito _MBCS Definito _UNICODE Definito
_ftprintf_p _fprintf_p _fprintf_p _fwprintf_p
_ftprintf_p_l _fprintf_p_l _fprintf_p_l _fwprintf_p_l

Per altre informazioni, vedere Sintassi delle specifiche di formato.

Requisiti

Funzione Intestazione obbligatoria
_fprintf_p, _fprintf_p_l <stdio.h>
_fwprintf_p, _fwprintf_p_l <stdio.h> o <wchar.h>

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

Esempio

// crt_fprintf_p.c
// This program uses _fprintf_p to format various
// data and print it to the file named FPRINTF_P.OUT. It
// then displays FPRINTF_P.OUT on the screen using the system
// function to invoke the operating-system TYPE command.
//

#include <stdio.h>
#include <process.h>

int main( void )
{
    FILE    *stream = NULL;
    int     i = 10;
    double  fp = 1.5;
    char    s[] = "this is a string";
    char    c = '\n';

    // Open the file
    if ( fopen_s( &stream, "fprintf_p.out", "w" ) == 0)
    {
        // Format and print data
        _fprintf_p( stream, "%2$s%1$c", c, s );
        _fprintf_p( stream, "%d\n", i );
        _fprintf_p( stream, "%f\n", fp );

        // Close the file
        fclose( stream );
    }

    // Verify our data
    system( "type fprintf_p.out" );
}
this is a string
10
1.500000

Vedi anche

I/O di flusso
_cprintf, _cprintf_l, _cwprintf, _cwprintf_l
fscanf, _fscanf_l, fwscanf, _fwscanf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
Parametri posizionali printf_p
_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l
_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l
Parametri posizionali printf_p
fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l