Bagikan melalui


Fungsi vprintf

vprintf Masing-masing fungsi mengambil penunjuk ke daftar argumen, lalu memformat dan menulis data yang diberikan ke tujuan tertentu. Fungsi ini berbeda dalam beberapa cara: dalam validasi parameter, apakah fungsi mengambil string karakter byte tunggal atau lebar, tujuan output, dan dukungan untuk menentukan parameter pesanan digunakan dalam string format.

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l
vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l
vprintf, vwprintf
_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l
vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l
_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l
_vsnprintf, _vsnwprintfvsprintf, vswprintf
_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l

Keterangan

Fungsi ini vprintf mirip dengan fungsi mitranya seperti yang tercantum dalam tabel berikut. Namun, setiap vprintf fungsi menerima penunjuk ke daftar argumen, sedangkan setiap fungsi mitra menerima daftar argumen.

Fungsi ini memformat data untuk output ke tujuan sebagai berikut.

Function Fungsi mitra Tujuan output Validasi Parameter Dukungan Parameter Posisi
_vcprintf _cprintf konsol Periksa null. no
_vcwprintf _cwprintf konsol Periksa null. no
vfprintf fprintf stream Periksa null. no
vfprintf_p fprintf_p stream Periksa format null dan valid. yes
vfprintf_s fprintf_s stream Periksa format null dan valid. no
vfwprintf fwprintf stream Periksa null. no
vfwprintf_p fwprintf_p stream Periksa format null dan valid. yes
vfwprintf_s fwprintf_s stream Periksa format null dan valid. no
vprintf printf stdout Periksa null. no
vprintf_p printf_p stdout Periksa format null dan valid. yes
vprintf_s printf_s stdout Periksa format null dan valid. no
vwprintf wprintf stdout Periksa null. no
vwprintf_p wprintf_p stdout Periksa format null dan valid. yes
vwprintf_s wprintf_s stdout Periksa format null dan valid. no
vsprintf sprintf memori menunjuk ke oleh buffer Periksa null. no
vsprintf_p sprintf_p memori menunjuk ke oleh buffer Periksa format null dan valid. yes
vsprintf_s sprintf_s memori menunjuk ke oleh buffer Periksa format null dan valid. no
vswprintf swprintf memori menunjuk ke oleh buffer Periksa null. no
vswprintf_p swprintf_p memori menunjuk ke oleh buffer Periksa format null dan valid. yes
vswprintf_s swprintf_s memori menunjuk ke oleh buffer Periksa format null dan valid. no
_vscprintf _vscprintf memori menunjuk ke oleh buffer Periksa null. no
_vscwprintf _vscwprintf memori menunjuk ke oleh buffer Periksa null. no
_vsnprintf _snprintf memori menunjuk ke oleh buffer Periksa null. no
_vsnwprintf _snwprintf memori menunjuk ke oleh buffer Periksa null. no

Argumen argptr memiliki jenis va_list, yang didefinisikan dalam VARARGS. H dan STDARG.H. Variabel argptr harus diinisialisasi oleh va_start, dan dapat diinisialisasi ulang oleh panggilan berikutnya va_arg ; argptr kemudian menunjuk ke awal daftar argumen yang dikonversi dan ditransmisikan untuk output sesuai dengan spesifikasi yang sesuai dalam format argumen. format memiliki bentuk dan fungsi yang sama dengan format argumen untuk printf. Tidak satu pun dari fungsi-fungsi ini memanggil va_end. Untuk deskripsi yang lebih lengkap tentang setiap vprintf fungsi, lihat deskripsi fungsi mitranya seperti yang tercantum dalam tabel sebelumnya.

_vsnprintf berbeda dari vsprintf dalam bahwa ia menulis tidak lebih dari count byte ke buffer.

Versi fungsi-fungsi ini dengan infiks w dalam nama adalah versi karakter lebar dari fungsi yang sesuai tanpa infiks w ; di masing-masing fungsi karakter lebar ini, buffer dan format merupakan string karakter lebar. Jika tidak, setiap fungsi karakter lebar berwujud identik dengan fungsi rekan SBCS-nya.

Versi fungsi-fungsi ini dengan _s akhiran dan _p adalah versi yang lebih aman. Versi ini memvalidasi string format. Mereka akan menghasilkan pengecualian jika string format tidak terbentuk dengan baik (misalnya, jika karakter pemformatan tidak valid digunakan).

Versi fungsi-fungsi ini dengan _p akhiran memungkinkan Anda menentukan urutan di mana argumen yang disediakan diganti dalam string format. Untuk informasi selengkapnya, lihat Parameter Posisi printf_p.

Untuk vsprintf, vswprintf, _vsnprintf dan _vsnwprintf, jika penyalinan terjadi di antara string yang tumpang tindih, perilaku tidak terdefinisi.

Penting

Pastikan itu format bukan string yang ditentukan pengguna. Untuk informasi selengkapnya, lihat Menghindari overruns buffer. Jika menggunakan versi aman fungsi-fungsi ini (baik _s akhiran atau _p , string format yang disediakan pengguna dapat memicu pengecualian parameter yang tidak valid jika string yang disediakan pengguna berisi karakter pemformatan yang tidak valid.

Baca juga

Streaming I/O
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