Dela via


_fprintf_p, _fprintf_p_l, _ftprintf_p, _ftprintf_p_l, , , _fwprintf_p_fwprintf_p_l

Skriver ut formaterade data till en ström.

För _ftprintf_p och _ftprintf_p_l, se Generic-text-funktionsmappningar.

Syntax

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 ]...
);

Parameterar

stream
Pekare mot FILE strukturen.

format
Formatkontrollsträng.

argument
Valfria argument.

locale
Språkvarianten som ska användas.

Returvärde

_fprintf_p och _fwprintf_p returnera antalet tecken som skrivits eller returnera ett negativt värde när ett utdatafel inträffar.

Anmärkningar

_fprintf_p 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 _fprintf_phar argumentet samma syntax som i _printf_p. Dessa funktioner stöder positionsparametrar, vilket innebär att ordningen på de parametrar som används av formatsträngen kan ändras. Mer information om positionsparametrar finns i printf_p Positionsparametrar.

_fwprintf_p är en bred teckenversion av _fprintf_p, i _fwprintf_p, format är en sträng med många tecken. Dessa funktioner fungerar identiskt om strömmen öppnas i ANSI-läge. _fprintf_p 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_lverifierar dessa funktioner sina parametrar och anropar den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering, om antingen stream eller format är en null-pekare eller om det finns några okända eller dåligt formaterade formateringsspecificerare. Om körningen tillåts fortsätta returnerar funktionerna -1 och ställs in errnoEINVAL.

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_p _fprintf_p _fprintf_p _fwprintf_p
_ftprintf_p_l _fprintf_p_l _fprintf_p_l _fwprintf_p_l

Mer information finns i Syntax för formatspecifikation.

Kravspecifikation

Funktion Obligatoriskt huvud
_fprintf_p, _fprintf_p_l <stdio.h>
_fwprintf_p, _fwprintf_p_l <stdio.h> eller <wchar.h>

Mer kompatibilitetsinformation finns i Kompatibilitet.

Exempel

// 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

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
printf_p positionsparametrar
_cprintf_p, _cprintf_p_l, , _cwprintf_p_cwprintf_p_l
_cprintf_s, _cprintf_s_l, , _cwprintf_s_cwprintf_s_l
printf_p positionsparametrar
fscanf_s, _fscanf_s_l, , fwscanf_s_fwscanf_s_l