Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Skriv ut formaterade data till en ström. Dessa funktioner är versioner av fprintf
, _fprintf_l
, fwprintf
, _fwprintf_l
med säkerhetsförbättringar enligt beskrivningen i Säkerhetsfunktioner i CRT.
För _ftprintf_s
och _ftprintf_s_l
, se Generic-text-funktionsmappningar.
Syntax
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 ]
);
Parameterar
stream
Pekare till FILE
struktur.
format
Formatkontrollsträng.
argument_list
Valfria argument till formatsträngen.
locale
Språkvarianten som ska användas.
Returvärde
fprintf_s
returnerar antalet skrivna byte.
fwprintf_s
returnerar antalet breda tecken som skrivits. Var och en av dessa funktioner returnerar ett negativt värde i stället när ett utdatafel inträffar.
Anmärkningar
fprintf_s
formaterar och skriver ut en serie tecken och värden till utdata stream
. Varje argument i argument_list
(om det finns några) konverteras och utdata enligt motsvarande formatspecifikation i format
. Argumentet format
använder formatspecifikationssyntaxen för printf
och wprintf
funktionerna.
fwprintf_s
är en bred teckenversion av fprintf_s
, i fwprintf_s
, format
är en sträng med många tecken. Dessa funktioner fungerar identiskt om strömmen öppnas i ANSI-läge.
fprintf_s
stöder för närvarande inte utdata till en UNICODE-ström.
Versionerna av dessa funktioner med suffixet _l
är identiska förutom att de använder språkparametern som skickas i stället för det aktuella språket.
Viktigt!
Kontrollera att det format
inte är en användardefinierad sträng.
Från och med Windows 10 version 2004 (version 19041) skriver funktionsfamiljen printf
ut exakt representerande flyttalsnummer enligt IEEE 754-reglerna för avrundning. I tidigare versioner av Windows skulle exakt representerande flyttalsnummer som slutar på "5" alltid avrunda uppåt. IEEE 754 anger att de måste avrunda till den närmaste jämna siffran (även kallat "Bankers avrundning"). Till exempel bör både printf("%1.0f", 1.5)
och printf("%1.0f", 2.5)
avrunda till 2. Tidigare skulle 1,5 avrunda till 2 och 2,5 skulle avrunda till 3. Den här ändringen påverkar endast exakt representerande tal. Till exempel fortsätter 2.35 (som, när det representeras i minnet, är närmare 2.3500000000000000008) att avrunda upp till 2,4. Avrundning som utförs av dessa funktioner respekterar nu också flyttalsrundningsläget som anges av fesetround
. Tidigare valde FE_TONEAREST
avrundning alltid beteende. Den här ändringen påverkar endast program som skapats med Visual Studio 2019 version 16.2 och senare. Om du vill använda det äldre avrundningsbeteendet för flyttalser länkar du till legacy_stdio_float_rounding.obj
.
Precis som de icke-säkra versionerna (se fprintf
, _fprintf_l
, fwprintf
), _fwprintf_l
verifierar dessa funktioner sina parametrar och anropar den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering, om det är en stream
NULL
pekare.format
Själva formatsträngen verifieras också. Om det finns några okända eller felaktigt formateringsspecificerare genererar dessa funktioner det ogiltiga parameterfelet. Om körningen tillåts fortsätta returnerar funktionerna i alla fall -1 och är inställda errno
på EINVAL
. Mer information om returkoder finns i errno
, _doserrno
, _sys_errlist
och _sys_nerr
.
Mappningar av funktionen Generic-text
Funktionen i tchar.h
kolumnen mappar till funktionen i de andra kolumnerna beroende på vilken teckenuppsättning som definieras vid kompileringstiden.
funktion tchar.h |
_UNICODE och _MBCS inte definierad |
_MBCS definierad |
_UNICODE definierad |
---|---|---|---|
_ftprintf_s |
fprintf_s |
fprintf_s |
fwprintf_s |
_ftprintf_s_l |
_fprintf_s_l |
_fprintf_s_l |
_fwprintf_s_l |
Mer information finns i Syntax för formatspecifikation.
Kravspecifikation
Funktion | Obligatoriskt huvud |
---|---|
fprintf_s , _fprintf_s_l |
<stdio.h> |
fwprintf_s , _fwprintf_s_l |
<stdio.h> eller <wchar.h> |
Mer kompatibilitetsinformation finns i Kompatibilitet.
Exempel
// 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
Se även
Strömma I/O
_cprintf
, _cprintf_l
, , _cwprintf
_cwprintf_l
fscanf
, _fscanf_l
, , fwscanf
_fwscanf_l
sprintf
, _sprintf_l
, swprintf
, , , _swprintf_l
__swprintf_l