Printing formatted output with printf pada 1-c-programming-language | belajar system-programming | Peskom Guide
Home

Printing formatted output with printf

Last Updated : 05 January 2025 / 4 min read

Salah satu hal yang paling sering kita lakukan saat membuat program dengan C adalah mencetak nilai dari sebuah variabel. Dan kita melakukannya dengan menggunakan fungsi printf .

Kita sudah pernah menggunakan fungsi ini berkali-kali sebelumnya pada modul pengenalan C, sebelumnya. Namun kita akan mempelajari lebih dalam mengenai fungsi ini disini.

printf function prototype
 printf(string, expression1, expression2, ...)  

Bisa dilihat dari contoh diatas, tidak ada batasan argument yang bisa kita masukkan ke dalam fungsi printf . Kita bisa memasukkan sebanyak mungkin argument yang kita inginkan.

Format string pada argumen pertama bisa berbentuk karakter biasa atau bisa juga berbentuk format specifier . Format specifier ini adalah sebuah penanda nilai yang akan kita masukkan di pada argumen-argumen selanjutnya.

Tipe data dari informasi yang kita masukkan berdasarkan pada karakter setelah karakter % . Jadi nilai yang kita masukkan ke dalam argumen-argumen selanjutnya harus sesuai dengan tipe data yang kita tentukan dikarenakan nilai tersebut akan dikonversikan menjadi karakter yang bisa dimunculkan ke layar nantinya. Dari sinilah asal muasal nama conversion specification .

Kita sudah melihat contoh dari bagaimana specifier %d bisa untuk menampung nilai bertipe integer dan %f bisa untuk menampung nilai bertipe float .

format specifier
 int i, j;
float x, y;
 
i = 10;
j = 30;
x = 5.6021f;
y = 62.660f;
 
printf("i = %d, j = %d, x = %f, y = %f", i, j, x, y);  

Hasil output dari kode diatas adalah:

output
 i = 10, j = 30, x = 5.602100, y = 62.660000  

Bisa dilihat kalau format specifier akan digantikan dengan nilai dari argumen-argument yang kita masukkan setelahnya secara berurutan.

Conversion Specification

Kita juga bisa menggunakan conversion specification untuk mengubah nilai yang ingin kita tampilkan.

Salah satu contoh implementasi dari conversion specification adalah ketika kita ingin hanya menampilkan nilai float dengan 2 angka di belakang koma.

conversion specification
 float x = 5.6021f;
 
printf("x = %.2f", x);  

Hasil output dari kode diatas adalah:

output
 x = 5.60  

Umumnya, conversion specification memiliki format %m.pX atau %-m.pX dimana m dan p adalah integer dan x adalah sebuah karakter. m dan p bersifat opsional. Jika p tidak digunakan, maka koma untuk pemisah antara m dan p juga tidak akan digunakan.

Dalam kasus contoh kita sebelumnya, kita hanya menggunakan p dan X saja. Dimana p disini adalah jumlah angka di belakang koma yang ingin kita tampilkan.

Nilai m disini berguna untuk menentukan lebar dari output yang akan kita tampilkan.

conversion specification
 float x = 5.6021f;
 
printf("%10.2f", x);  

Hasil output dari kode diatas adalah:

output
       5.60  

Bisa dilihat kalau output yang dihasilkan memiliki lebar 10 karakter. Hal tersebut dikarenakan kita menentukan nilai m sebesar 10, mengakibatkan nilai output kita memiliki spasi di sebelah kirinya. Jika kita ingin membuat nilai output kita berada di kiri, kita bisa menggunakan conversion specification %-m.pX .

conversion specification
 float x = 5.6021f;
float y = 62.660f;
 
printf("%-10.2f %-10.2f", x, y);  

Hasil output dari kode diatas adalah:

output
 5.60       62.66  

Bisa dilihat kalau nilai output variabel x kita berada di kiri sebelum spasi, karena kita menggunakan conversion specification %-10.2f .

Escape Sequences

Escape sequences adalah sebuah karakter yang digunakan untuk menampilkan karakter khusus untuk dibaca compiler . Beberapa contoh dari escape sequences adalah:

  • \n untuk membuat baris baru (newline).
  • \b untuk membuat backspace.
  • \t untuk melakukan tab.
  • dan masih banyak lagi.
escape sequences
 printf("Hello, World!\nThis is a test.\tThis is another test.\n");  

Hasil output dari kode diatas adalah:

output
 Hello, World!
This is a test.  This is another test.  

Salah satu escape sequence yang sering digunakan juga adalah \ yang dapat digunakan untuk menampilkan karakter " . Sebagai contoh:

escape sequences with double quote
 printf("The Master said, \"A true gentleman is one who has set his heart upon the Way. A fellow who is ashamed merely of shabby clothing or modest meals is not even worth conversing with.\"\n - (Confucius)\n");  

Hasil output dari kode diatas adalah:

output
 The Master said, "A true gentleman is one who has set his heart upon the Way. A fellow who is ashamed merely of shabby clothing or modest meals is not even worth conversing with."
 - (Confucius)  

Lucunya adalah, jika kita ingin menampilkan karakter \ maka kita harus menulis \\ . Karena jika kita hanya menulis \ maka compiler akan menganggapnya sebagai awalan dari escape sequence . Maka untuk menampilkan karakter \ kita harus menulis \\ .

escape sequences with backslash
 printf("The backslash character is: \\");  

Hasil output dari kode diatas adalah:

output
 The backslash character is: \  

Apakah konten ini membantu ? Jika ya, kami akan sangat menghargai jika Anda bisa memberikan bintang pada GitHub Repository kami dan ikuti sosial media dari komunitas Peskom di Facebook . Dukungan Anda membantu kami untuk terus berkembang! 🌟

Dan juga jika Anda menemukan kesalahan, typo, kekurangan, atau kesalahan pada artikel ini, kami sangat terbuka untuk masukan. Silakan laporkan temuan Anda melalui halaman Github Issues ini . Mari bersama-sama meningkatkan kualitas konten untuk komunitas Peskom! 🚀

Semoga semangat open source turut senantiasa menyertaimu.