Bagikan melalui


_fprintf_p, , _fprintf_p_l_fwprintf_p,_fwprintf_p_l

Mencetak data yang diformat ke aliran.

Sintaks

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

Parameter

stream
Penunjuk ke FILE struktur.

format
String kontrol format.

argument
Argumen opsional.

locale
Lokal yang akan digunakan.

Nilai hasil

_fprintf_p dan _fwprintf_p mengembalikan jumlah karakter yang ditulis atau mengembalikan nilai negatif saat terjadi kesalahan output.

Keterangan

_fprintf_p memformat dan mencetak serangkaian karakter dan nilai ke output stream. Setiap fungsi argument (jika ada) dikonversi dan dihasilkan sesuai dengan spesifikasi format yang sesuai di format. Untuk _fprintf_p, format argumen memiliki sintaks yang sama dengan yang ada di ._printf_p Fungsi-fungsi ini mendukung parameter posisional, yang berarti bahwa urutan parameter yang digunakan oleh string format dapat diubah. Untuk informasi selengkapnya tentang parameter posisi, lihat Parameter Posisi printf_p.

_fwprintf_p adalah versi karakter lebar dari _fprintf_p; dalam _fwprintf_p, format adalah string karakter lebar. Fungsi-fungsi ini bersifat identik jika aliran dibuka dalam mode ANSI. _fprintf_p saat ini tidak mendukung output ke dalam aliran UNICODE.

Versi fungsi-fungsi ini dengan _l akhiran identik kecuali mereka menggunakan parameter lokal yang diteruskan alih-alih lokal saat ini.

Penting

Pastikan itu format bukan string yang ditentukan pengguna.

Mulai Windows 10 versi 2004 (build 19041), printf keluarga fungsi mencetak angka titik mengambang yang persis dapat diwakili sesuai dengan aturan IEEE 754 untuk pembulatan. Di versi Windows sebelumnya, angka titik pecahan yang persis dapat diwakili yang berakhiran '5' akan selalu dibulatkan. IEEE 754 menyatakan bahwa mereka harus membulatkan ke digit terdekat bahkan (juga dikenal sebagai "Pembulatan Bankir"). Misalnya, dan printf("%1.0f", 1.5) printf("%1.0f", 2.5) harus membulatkan ke 2. Sebelumnya, 1,5 akan membulatkan ke 2 dan 2,5 akan dibulatkan ke 3. Perubahan ini hanya memengaruhi angka yang tepat yang dapat diwakili. Misalnya, 2,35 (yang, ketika diwakili dalam memori, lebih dekat ke 2,3500000000000000008) terus membulatkan ke atas hingga 2,4. Pembulatan yang dilakukan oleh fungsi-fungsi ini sekarang juga menghormati mode pembulatan titik mengambang yang ditetapkan oleh fesetround. Sebelumnya, pembulatan selalu memilih FE_TONEAREST perilaku. Perubahan ini hanya memengaruhi program yang dibuat menggunakan Visual Studio 2019 versi 16.2 dan yang lebih baru. Untuk menggunakan perilaku pembulatan titik mengambang warisan, tautkan dengan 'legacy_stdio_float_rounding.obj'.

Seperti versi yang tidak aman (lihat fprintf, , fwprintf_fprintf_l,_fwprintf_l ), fungsi ini memvalidasi parameternya dan memanggil penangan parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter, jika atau stream format adalah penunjuk null atau jika ada penentu pemformatan yang tidak diketahui atau terbentuk dengan buruk. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan diatur errno ke EINVAL.

Pemetaan rutin teks generik

Fungsi dalam tchar.h kolom memetakan ke fungsi di kolom lain tergantung pada kumpulan karakter yang ditentukan pada waktu kompilasi.

tchar.h fungsi _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_ftprintf_p _fprintf_p _fprintf_p _fwprintf_p
_ftprintf_p_l _fprintf_p_l _fprintf_p_l _fwprintf_p_l

Untuk informasi selengkapnya, lihat Sintaks spesifikasi format.

Persyaratan

Fungsi Header yang diperlukan
_fprintf_p, _fprintf_p_l <stdio.h>
_fwprintf_p, _fwprintf_p_l <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

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

Lihat juga

Streaming I/O
_cprintf, , _cprintf_l_cwprintf,_cwprintf_l
fscanf, , _fscanf_lfwscanf,_fwscanf_l
sprintf, , _sprintf_lswprintf, , _swprintf_l,__swprintf_l
Parameter Posisi printf_p
_cprintf_p, , _cprintf_p_l_cwprintf_p,_cwprintf_p_l
_cprintf_s, , _cprintf_s_l_cwprintf_s,_cwprintf_s_l
Parameter Posisi printf_p
fscanf_s, , _fscanf_s_lfwscanf_s,_fwscanf_s_l