fprintf_s
, _fprintf_s_l
, fwprintf_s
, _fwprintf_s_l
Stampare dati formattati in un flusso. Queste funzioni sono versioni di fprintf
, _fprintf_l
, fwprintf
, _fwprintf_l
con miglioramenti della sicurezza, come descritto in Funzionalità di sicurezza in CRT.
Sintassi
int fprintf_s(
FILE *stream,
const char *format [,
argument_list ]
);
int _fprintf_s_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument_list ]
);
int fwprintf_s(
FILE *stream,
const wchar_t *format [,
argument_list ]
);
int _fwprintf_s_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument_list ]
);
Parametri
stream
Puntatore alla struttura FILE
.
format
Stringa di controllo del formato.
argument_list
Argomenti facoltativi per la stringa di formato.
locale
Impostazioni locali da usare.
Valore restituito
fprintf_s
restituisce il numero di byte scritti. fwprintf_s
restituisce il numero di caratteri wide scritti. Ognuna di queste funzioni restituisce invece un valore negativo quando si verifica un errore di output.
Osservazioni:
La funzione fprintf_s
formatta e stampa una serie di caratteri e di valori nell'elemento di output stream
. 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 printf
le funzioni e wprintf
.
fwprintf_s
è una versione a caratteri wide di fprintf_s
. In fwprintf_s
, format
è una stringa di caratteri wide. Queste funzioni si comportano in modo identico se il flusso viene aperto in modalità ANSI. fprintf_s
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_l
fwprintf
, , _fwprintf_l
), queste funzioni convalidano i relativi parametri e richiamano il gestore di parametri non validi, come descritto in Convalida dei parametri, se stream
o format
è un NULL
puntatore. Viene convalidata anche la stringa di formato stessa. Se sono presenti identificatori di formattazione sconosciuti o non corretti, queste funzioni generano l'eccezione di parametro non valido. In tutti casi, se l'esecuzione può continuare, le funzioni restituiscono -1 e impostano errno
su EINVAL
. Per altre informazioni sui codici restituiti, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Mapping di routine di testo generico
TCHAR.H Routine |
_UNICODE e _MBCS non definito |
_MBCS Definito |
_UNICODE Definito |
---|---|---|---|
_ftprintf_s |
fprintf_s |
fprintf_s |
fwprintf_s |
_ftprintf_s_l |
_fprintf_s_l |
_fprintf_s_l |
_fwprintf_s_l |
Per altre informazioni, vedere Sintassi delle specifiche di formato.
Requisiti
Funzione | Intestazione obbligatoria |
---|---|
fprintf_s , _fprintf_s_l |
<stdio.h> |
fwprintf_s , _fwprintf_s_l |
<stdio.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// crt_fprintf_s.c
// This program uses fprintf_s to format various
// data and print it to the file named FPRINTF_S.OUT. It
// then displays FPRINTF_S.OUT on the screen using the system
// function to invoke the operating-system TYPE command.
#include <stdio.h>
#include <process.h>
FILE *stream;
int main( void )
{
int i = 10;
double fp = 1.5;
char s[] = "this is a string";
char c = '\n';
fopen_s( &stream, "fprintf_s.out", "w" );
fprintf_s( stream, "%s%c", s, c );
fprintf_s( stream, "%d\n", i );
fprintf_s( stream, "%f\n", fp );
fclose( stream );
system( "type fprintf_s.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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per