printf
, _printf_l
, wprintf
, _wprintf_l
Mencetak output yang diformat ke aliran output standar. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat printf_s
, _printf_s_l
, wprintf_s
, . _wprintf_s_l
Sintaks
int printf(
const char *format [,
argument]...
);
int _printf_l(
const char *format,
_locale_t locale [,
argument]...
);
int wprintf(
const wchar_t *format [,
argument]...
);
int _wprintf_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. Jika format
adalah NULL
, 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
. Jika EOF
(0xFFFF) ditemui di argument
, fungsi mengembalikan -1.
Untuk informasi tentang errno
kode kesalahan dan , lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
Keterangan
Fungsi memformat printf
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. printf
dan fprintf
berulah identik kecuali yang printf
menulis output ke stdout
bukan ke tujuan jenis FILE
.
wprintf
adalah versi karakter yang luas dari printf
; format
adalah string karakter lebar. wprintf
dan printf
bersifat identik jika aliran dibuka dalam mode ANSI. printf
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.
Argumen format
terdiri dari karakter biasa, urutan escape, dan (jika argumen mengikuti format
) spesifikasi format. Karakter biasa dan urutan escape disalin untuk stdout
dalam urutan penampilan mereka. Misalnya, baris:
printf("Line one\n\t\tLine two\n");
menghasilkan output:
Line one
Line two
Spesifikasi format selalu dimulai dengan tanda persen (%) dan dibaca dari kiri ke kanan. Ketika printf
menemukan spesifikasi format pertama (jika ada), ia mengonversi nilai argumen pertama setelah format
dan menghasilkannya. Spesifikasi format kedua menyebabkan argumen kedua dikonversi dan output, dan sebagainya. Jika ada lebih banyak argumen daripada spesifikasi format, argumen tambahan diabaikan. Hasilnya tidak terdefinisi jika tidak ada cukup argumen untuk semua spesifikasi format.
Penting
Pastikan itu format
bukan string yang ditentukan pengguna.
Pemetaan rutin teks generik
Tchar.h Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tprintf |
printf |
printf |
wprintf |
_tprintf_l |
_printf_l |
_printf_l |
_wprintf_l |
Persyaratan
Rutin | Header yang diperlukan |
---|---|
printf , _printf_l |
<stdio.h> |
wprintf , _wprintf_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.c
// This program uses the printf and wprintf functions
// to produce formatted output.
#include <stdio.h>
int main( void )
{
char ch = 'h',
*string = "computer";
wchar_t wch = L'w',
*wstring = L"Unicode";
int count = -9234;
double fp = 251.7366;
// Display integers
printf( "Integer formats:\n"
" Decimal: %d Justified: %.6d "
"Unsigned: %u\n",
count, count, count, count );
// Display decimals
printf( "Decimal %d as:\n Hex: %Xh "
"C hex: 0x%x Octal: %o\n",
count, count, count, count );
// Display in different radixes
printf( "Digits 10 equal:\n Hex: %i "
"Octal: %i Decimal: %i\n",
0x10, 010, 10 );
// Display characters
printf("Characters in field (1):\n"
"%10c%5hc%5C%5lc\n",
ch, ch, wch, wch);
wprintf(L"Characters in field (2):\n"
L"%10C%5hc%5c%5lc\n",
ch, ch, wch, wch);
// Display strings
printf("Strings in field (1):\n%25s\n"
"%25.4hs\n %S%25.3ls\n",
string, string, wstring, wstring);
wprintf(L"Strings in field (2):\n%25S\n"
L"%25.4hs\n %s%25.3ls\n",
string, string, wstring, wstring);
// Display real numbers
printf("Real numbers:\n %f %.2f %e %E\n",
fp, fp, fp, fp );
// Display pointer
printf( "\nAddress as: %p\n", &count);
}
Sampel output
Integer formats:
Decimal: -9234 Justified: -009234 Unsigned: 4294958062
Decimal -9234 as:
Hex: FFFFDBEEh C hex: 0xffffdbee Octal: 37777755756
Digits 10 equal:
Hex: 16 Octal: 8 Decimal: 10
Characters in field (1):
h h w w
Characters in field (2):
h h w w
Strings in field (1):
computer
comp
Unicode Uni
Strings in field (2):
computer
comp
Unicode Uni
Real numbers:
251.736600 251.74 2.517366e+002 2.517366E+002
Address as: 0012FF3C
Baca juga
Sintaks spesifikasi format: printf
dan wprintf
fungsi
Dukungan matematika dan titik mengambang
Streaming I/O
Lokal
fopen
, _wfopen
_fprintf_p
, _fprintf_p_l
, _fwprintf_p
, _fwprintf_p_l
scanf
, _scanf_l
, wscanf
, _wscanf_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, __swprintf_l
vprintf
Fungsi
_set_output_format
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