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, stdoutdan 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