Share via


_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l

Tulis output yang diformat menggunakan penunjuk ke daftar argumen, dengan kemampuan untuk menentukan urutan argumen yang digunakan dalam string format.

Sintaks

int _vfprintf_p(
   FILE *stream,
   const char *format,
   va_list argptr
);
int _vfprintf_p_l(
   FILE *stream,
   const char *format,
   _locale_t locale,
   va_list argptr
);
int _vfwprintf_p(
   FILE *stream,
   const wchar_t *format,
   va_list argptr
);
int _vfwprintf_p_l(
   FILE *stream,
   const wchar_t *format,
   _locale_t locale,
   va_list argptr
);

Parameter

stream
Penunjuk ke FILE struktur.

format
Spesifikasi format.

argptr
Penunjuk ke daftar argumen.

locale
Lokal yang akan digunakan.

Untuk informasi selengkapnya, lihat Sintaks spesifikasi format.

Nilai hasil

_vfprintf_p dan _vfwprintf_p mengembalikan jumlah karakter yang ditulis, tidak termasuk karakter null yang mengakhiri, atau nilai negatif jika terjadi kesalahan output.

Keterangan

Masing-masing fungsi ini mengambil penunjuk ke daftar argumen, lalu memformat dan menulis data yang diberikan ke stream. Fungsi-fungsi ini berbeda dari _vfprint_s versi dan _vfwprint_s hanya karena mendukung parameter posisi. Untuk informasi selengkapnya, lihat Parameter Posisi printf_p.

_vfwprintf_p adalah versi _vprintf_pkarakter lebar ; dua fungsi bersifat identik jika aliran dibuka dalam mode ANSI. _vprintf_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 utas saat ini.

Penting

Pastikan itu format bukan string yang ditentukan pengguna. Untuk informasi selengkapnya, lihat Menghindari overruns buffer. 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'.

Jika atau streamformat adalah penunjuk null, atau jika string format berisi karakter pemformatan yang tidak valid, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan diatur errno ke EINVAL.

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_vftprintf_p _vfprintf_p _vfprintf_p _vfwprintf_p
_vftprintf_p_l _vfprintf_p_l _vfprintf_p_l _vfwprintf_p_l

Persyaratan

Rutin Header yang diperlukan Header opsional
_vfprintf_p, _vfprintf_p_l <stdio.h> dan <stdarg.h> <varargs.h>*
_vfwprintf_p, _vfwprintf_p_l <stdio.h> atau <wchar.h>, dan <stdarg.h> <varargs.h>*

* Diperlukan untuk kompatibilitas UNIX V.

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Streaming I/O
vprintf Fungsi
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
va_arg, va_copy, va_end, va_start
Parameter Posisi printf_p
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l