_printf_p
, _printf_p_l
, _wprintf_p
, _wprintf_p_l
Mencetak output berformat ke aliran output standar, dan memungkinkan spesifikasi urutan parameter digunakan dalam string format.
Sintaks
int _printf_p(
const char *format [,
argument]...
);
int _printf_p_l(
const char *format,
_locale_t locale [,
argument]...
);
int _wprintf_p(
const wchar_t *format [,
argument]...
);
int _wprintf_p_l(
const wchar_t *format,
_locale_t locale [,
argument]...
);
Parameter
format
Kontrol format.
argument
Argumen opsional.
locale
Lokal yang akan digunakan.
Nilai hasil
Mengembalikan jumlah karakter yang dicetak atau nilai negatif jika terjadi kesalahan.
Keterangan
Fungsi memformat _printf_p
dan mencetak serangkaian karakter dan nilai ke aliran output standar, stdout
. Jika argumen mengikuti format
string, format
string harus berisi spesifikasi yang menentukan format output untuk argumen (lihat Parameter Posisi printf_p).
Perbedaan antara _printf_p
dan printf_s
adalah yang _printf_p
mendukung parameter posisi, yang memungkinkan menentukan urutan di mana argumen digunakan dalam string format. Untuk informasi selengkapnya, lihat Parameter Posisi printf_p.
_wprintf_p
adalah versi _printf_p
karakter lebar ; mereka bersifat identik jika aliran dibuka dalam mode ANSI. _printf_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.
Jika format
atau argument
, NULL
atau string format berisi karakter pemformatan yang tidak valid, _printf_p
dan _wprintf_p
fungsi memanggil handler parameter yang tidak valid, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan -1 dan diatur errno
ke EINVAL
.
Pemetaan rutin teks generik
Rutinitas Tchar.h | _UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tprintf_p |
_printf_p |
_printf_p |
_wprintf_p |
_tprintf_p_l |
_printf_p_l |
_printf_p_l |
_wprintf_p_l |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_printf_p , _printf_p_l |
<stdio.h> |
_wprintf_p , _wprintf_p_l |
<stdio.h> atau <wchar.h> |
Konsol tidak didukung di aplikasi Platform Windows Universal (UWP). Handel aliran standar yang terkait dengan konsol, , stdin
, stdout
dan stderr
, harus dialihkan sebelum fungsi run-time C dapat menggunakannya di aplikasi UWP. 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_printf_p.c
// This program uses the _printf_p and _wprintf_p
// functions to choose the order in which parameters
// are used.
#include <stdio.h>
int main( void )
{
// Positional arguments
_printf_p( "Specifying the order: %2$s %3$s %1$s %4$s %5$s.\n",
"little", "I'm", "a", "tea", "pot");
// Resume arguments
_wprintf_p( L"Reusing arguments: %1$d %1$d %1$d %1$d\n", 10);
// Width argument
_printf_p("Width specifiers: %1$*2$s", "Hello\n", 10);
}
Specifying the order: I'm a little tea pot.
Reusing arguments: 10 10 10 10
Width specifiers: Hello
Baca juga
Dukungan matematika dan titik mengambang
Streaming I/O
Lokal
fopen
, _wfopen
_fprintf_p
, _fprintf_p_l
, _fwprintf_p
, _fwprintf_p_l
fprintf
, _fprintf_l
, fwprintf
, _fwprintf_l
fprintf_s
, _fprintf_s_l
, fwprintf_s
, _fwprintf_s_l
scanf
, _scanf_l
, wscanf
, _wscanf_l
scanf_s
, _scanf_s_l
, wscanf_s
, _wscanf_s_l
_sprintf_p
, _sprintf_p_l
, _swprintf_p
, _swprintf_p_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, __swprintf_l
sprintf_s
, _sprintf_s_l
, swprintf_s
, _swprintf_s_l
vprintf
Fungsi
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