_vcprintf_p
, _vcprintf_p_l
, _vcwprintf_p
, _vcwprintf_p_l
Menulis output berformat ke konsol dengan menggunakan penunjuk ke daftar argumen, dan mendukung parameter posisi dalam string format.
Penting
API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.
Sintaks
int _vcprintf_p(
const char* format,
va_list argptr
);
int _vcprintf_p_l(
const char* format,
_locale_t locale,
va_list argptr
);
int _vcwprintf_p(
const wchar_t* format,
va_list argptr
);
int _vcwprintf_p_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: printf
dan wprintf
fungsi.
Nilai hasil
Jumlah karakter yang ditulis, atau nilai negatif jika terjadi kesalahan output. Jika format
adalah penunjuk null, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, errno
diatur ke EINVAL
, dan -1 dikembalikan.
Keterangan
Masing-masing fungsi ini mengambil penunjuk ke daftar argumen, lalu menggunakan fungsi untuk memformat dan menulis data yang diberikan ke konsol _putch
. (_vcwprintf_p
menggunakan _putwch
alih-alih _putch
. _vcwprintf_p
adalah versi karakter luas dari _vcprintf_p
. Dibutuhkan string karakter lebar sebagai argumen.)
Versi fungsi-fungsi ini yang memiliki _l
akhiran identik kecuali mereka menggunakan parameter lokal yang diteruskan alih-alih lokal saat ini.
Masing-masing argument
(jika ada) dikonversi dan merupakan output sesuai dengan spesifikasi format yang sesuai di format
. Spesifikasi format mendukung parameter posisi sehingga Anda dapat menentukan urutan di mana argumen digunakan dalam string format. Untuk informasi selengkapnya, lihat Parameter Posisi printf_p.
Fungsi-fungsi ini tidak menerjemahkan karakter umpan baris pada output ke dalam kombinasi umpan baris kembali (CR-LF).
Penting
Pastikan itu format
bukan string yang ditentukan pengguna. Untuk informasi selengkapnya, lihat Menghindari overruns buffer.
Fungsi-fungsi ini memvalidasi penunjuk input dan string format. Jika format
atau argument
, NULL
atau jika string format berisi karakter pemformatan yang tidak valid, fungsi ini memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini mengembalikan -1 dan diatur errno
ke EINVAL
.
Pemetaan rutin teks generik
Rutinitas Tchar.h | _UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_vtcprintf_p |
_vcprintf_p |
_vcprintf_p |
_vcwprintf_p |
_vtcprintf_p_l |
_vcprintf_p_l |
_vcprintf_p_l |
_vcwprintf_p_l |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_vcprintf_p , _vcprintf_p_l |
<conio.h> dan <stdarg.h> |
_vcwprintf_p , _vcwprintf_p_l |
<conio.h> dan <stdarg.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Penting
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
.
Contoh
// crt_vcprintf_p.c
// compile with: /c
#include <conio.h>
#include <stdarg.h>
// An error formatting function that's used to print to the console.
int eprintf(const char* format, ...)
{
va_list args;
va_start(args, format);
int result = _vcprintf_p(format, args);
va_end(args);
return result;
}
int main()
{
int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n",
"one", 222);
_cprintf_s("%d characters printed\r\n");
}
parameter 2 = 222; parameter 1 = one
38 characters printed
Baca juga
I/O konsol dan port
_cprintf
, _cprintf_l
, _cwprintf
, _cwprintf_l
va_arg
, va_copy
, va_end
, va_start
Parameter Posisi printf_p
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk