_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 , NULLatau 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