Bagikan melalui


vprintf_s, , _vprintf_s_lvwprintf_s,_vwprintf_s_l

Menulis output yang diformat dengan menggunakan penunjuk ke daftar argumen. Versi , , , vwprintf_vwprintf_lini memiliki peningkatan keamanan, seperti yang dijelaskan dalam Fitur keamanan di CRT. _vprintf_lvprintf

Sintaks

int vprintf_s(
   const char *format,
   va_list argptr
);
int _vprintf_s_l(
   const char *format,
   _locale_t locale,
   va_list argptr
);
int vwprintf_s(
   const wchar_t *format,
   va_list argptr
);
int _vwprintf_s_l(
   const wchar_t *format,
   _locale_t locale,
   va_list argptr
);

Parameter

format
Spesifikasi format.

argptr
Penunjuk ke daftar argumen.

locale
Lokal yang akan digunakan.

Untuk informasi selengkapnya, lihat Sintaks spesifikasi format.

Nilai hasil

vprintf_s dan vwprintf_s mengembalikan jumlah karakter yang ditulis, tidak termasuk karakter null yang mengakhiri, atau nilai negatif jika terjadi kesalahan output. Jika format 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.

Untuk informasi tentang kode kesalahan ini dan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Masing-masing fungsi ini mengambil penunjuk ke daftar argumen, lalu memformat dan menulis data yang diberikan ke stdout.

Versi aman fungsi ini berbeda dari vprintf dan vwprintf hanya dalam versi aman memeriksa apakah string format berisi karakter pemformatan yang valid.

vwprintf_s adalah versi vprintf_skarakter lebar ; dua fungsi bersifat identik jika aliran dibuka dalam mode ANSI. vprintf_s 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'.

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_vtprintf_s vprintf_s vprintf_s vwprintf_s
_vtprintf_s_l _vprintf_s_l _vprintf_s_l _vwprintf_s_l

Persyaratan

Rutin Header yang diperlukan Header opsional
vprintf_s, _vprintf_s_l <stdio.h> dan <stdarg.h> <varargs.h>*
vwprintf_s, _vwprintf_s_l <stdio.h> atau <wchar.h>, dan <stdarg.h> <varargs.h>*

* Diperlukan untuk kompatibilitas UNIX V.

Konsol tidak didukung di aplikasi Platform Windows Universal (UWP). Handel aliran standar yang terkait dengan konsol, , stdin, stdoutdan stderr, harus dialihkan sebelum fungsi run-time C dapat menggunakannya di aplikasi UWP. Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Lihat juga

Streaming I/O
vprintf Fungsi
fprintf, , _fprintf_lfwprintf,_fwprintf_l
printf, , _printf_lwprintf,_wprintf_l
sprintf, , _sprintf_lswprintf, , _swprintf_l,__swprintf_l
va_arg, , va_copyva_end,va_start