Dela via


fprintf, _fprintf_l, fwprintf, _fwprintf_l, , , _ftprintf_ftprintf_l

Skriv ut formaterade data till en ström. Säkrare versioner av dessa funktioner är tillgängliga. se fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l.

För _ftprintf och _ftprintf_l, se Generic-text-funktionsmappningar.

Syntax

int fprintf(
   FILE *stream,
   const char *format [,
   argument ]...
);
int _fprintf_l(
   FILE *stream,
   const char *format,
   _locale_t locale [,
   argument ]...
);
int fwprintf(
   FILE *stream,
   const wchar_t *format [,
   argument ]...
);
int _fwprintf_l(
   FILE *stream,
   const wchar_t *format,
   _locale_t locale [,
   argument ]...
);

Parameterar

stream
Pekare till FILE struktur.

format
Formatkontrollsträng.

argument
Valfria argument.

locale
Språkvarianten som ska användas.

Returvärde

fprintf returnerar antalet skrivna byte. fwprintf 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. Om stream eller format är NULLanropar dessa funktioner den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returnerar funktionerna -1 och ställs in errnoEINVAL. Formatsträngen är inte markerad för giltiga formateringstecken som när du använder fprintf_s eller fwprintf_s.

Mer information om returkoder finns i errno, _doserrno, _sys_errlistoch _sys_nerr.

Anmärkningar

fprintf formaterar och skriver ut en serie tecken och värden till utdata stream. Varje funktion argument (om någon) konverteras och utdata enligt motsvarande formatspecifikation i format. format För fprintfhar argumentet samma syntax som i printf.

fwprintf är en bred teckenversion av fprintf, i fwprintf, format är en sträng med många tecken. Dessa funktioner fungerar identiskt om strömmen öppnas i ANSI-läge. fprintf 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 parametern locale som skickas i stället för den aktuella trådspråkinställningen.

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.

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 fprintf fprintf fwprintf
_ftprintf_l _fprintf_l _fprintf_l _fwprintf_l

Mer information finns i Syntax för formatspecifikation.

Kravspecifikation

Funktion Obligatoriskt huvud
fprintf, _fprintf_l <stdio.h>
fwprintf, _fwprintf_l <stdio.h> eller <wchar.h>

Mer kompatibilitetsinformation finns i Kompatibilitet.

Exempel

// crt_fprintf.c
/* This program uses fprintf to format various
* data and print it to the file named FPRINTF.OUT. It
* then displays FPRINTF.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.out", "w" );
   fprintf( stream, "%s%c", s, c );
   fprintf( stream, "%d\n", i );
   fprintf( stream, "%f\n", fp );
   fclose( stream );
   system( "type fprintf.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
Syntax för formatspecifikation: printf och wprintf funktioner