Dalam 2 tutorial sebelum ini kita telah mempelajari cara menampilkan sesuatu (output) menggunakan perintah printf dalam bahasa pemrograman C. Kali ini kita akan bahas tentang fungsi perintah scanf serta cara penggunaan perintah scanf sebagai sarana input program bahasa C.
Pengertian perintah scanf
Perintah scanf, atau lebih tepatnya function scanf() adalah perintah bahasa C untuk menerima masukan ke dalam program, yakni sebagai sarana input dari pengguna.
Dengan menggunakan perintah scanf, kita bisa membuat program yang lebih interaktif, yakni meminta data dari user / pengguna. Data ini nantinya bisa disimpan ke dalam variabel dan diolah lebih lanjut untuk kemudian ditampilkan kembali.
Sama seperti printf, perintah scanf juga merupakan function yang butuh beberapa argumen. Berikut format dasar penggunaan fungsi scanf:
scanf(kode_format, &nama_variabel_penampung)
Bagian kode_format adalah format untuk tipe data inputan. Kode format ini sama seperti yang dipakai untuk fungsi printf, misalnya kode "%d" untuk tipe data integer, atau "%c" untuk tipe data char.
Bagian nama_variabel_penampung adalah nama variabel yang digunakan untuk menampung nilai inputan. Variabel ini harus sudah di deklarasikan sebelumnya.
Perhatikan penambahan tanda '&' diawal variabel penampung. Tanda ini merujuk ke pointer untuk alamat memory dari variabel tersebut. Untuk tipe data dasar seperti int, float dan char, tanda '&' harus disertakan. Untuk beberapa tipe data seperti string, tidak perlu ditambahkan tanda '&'.
Sama seperti printf, fungsi scanf juga bukan bagian dari inti bahasa C, tapi berasal dari library stdio.h. Karena itu kode #include <stdio.h> harus ditulis agar bisa menggunakan perintah scanf.
Contoh Kode Program dengan scanf
Langsung saja kita lihat contoh kode program bahasa C untuk penggunaan perintah scanf:
#include <stdio.h> int main(void) { int harga; printf("Masukkan harga barang: "); scanf("%d",&harga); printf("\n"); printf("Harga barang adalah: %d", harga); printf("\n"); return 0; }
Di awal kode program, saya mendefinisikan 1 buah variabel harga yang diset sebagai int. Artinya, variabel harga hanya bisa diisi dengan angka bulat.
Selanjutnya terdapat baris printf("Masukkan harga barang: "). Ini digunakan untuk menampilkan teks sebagai keterangan agar pengguna menginput sesuatu.
Proses pembacaan data di tangani oleh perintah scanf("%d",&harga). Disini, cursor akan berhenti dan menunggu kita menginput suatu nilai. Nilai ini akan disimpan ke dalam variabel harga. Tanda "%d" adalah sebagai kode format kalau nilai inputan harus berupa integer.
Terakhir, nilai dari variabel harga ini saya tampilkan kembali dengan perintah printf("Harga barang adalah: %d", harga). Berikut contoh hasilnya:
Yang juga harus menjadi catatan, ketika karakter yang diinput bukan angka, bahasa C akan mengkonversi karakter tersebut. Misalnya diinput angka 2500.25 (pecahan), yang akan di ambil hanya angka 2500 saja. Karena variabel harga hanya bisa menampung angka bulat.
Sebagai contoh kedua, saya akan buat kode program untuk menampung 3 inputan sekaligus:
#include <stdio.h> int main(void) { int harga; float nilai_ip; char huruf; printf("Harga barang: "); scanf("%d",&harga); printf("Nilai IP: "); scanf("%f",&nilai_ip); printf("Huruf pertama nama anda: "); scanf("%c",&huruf); printf("\n"); printf("harga = %d , nilai_ip = %f dan huruf = %c", harga, nilai_ip, huruf); printf("\n"); return 0; }
Kode program ini mirip seperti sebelumnya, hanya saja kali ini saya membuat 3 variabel bertipe int, float dan char. Setelah itu terdapat 3 perintah scanf untuk menerima input untuk ketiga variabel ini.
Akan tetapi, jika anda menjalankan kode program diatas, terdapat 1 masalah. Ketika kita menekan tombol enter setelah menginput angka untuk variabel nilai_ip, program langsung berakhir tanpa sempat berhenti untuk menerima input untuk variabel huruf.
Hal ini terjadi karena karakter "Enter" akan dibaca sebagai inputan untuk variabel huruf yang di set sebagai char.
Solusinya, tambahkan 1 spasi di dalam baris scanf("%c",&huruf) menjadi:
scanf(" %c",&huruf);
Trik ini akan mengatasi masalah karakter "Enter" yang langsung terinput ke variabel huruf. Berikut perubahan kode programnya:
#include <stdio.h> int main(void) { int harga; float nilai_ip; char huruf; printf("Harga barang: "); scanf("%d",&harga); printf("Nilai IP: "); scanf("%f",&nilai_ip); printf("Huruf pertama nama anda: "); scanf(" %c",&huruf); printf("\n"); printf("harga = %d , nilai_ip = %f dan huruf = %c", harga, nilai_ip, huruf); printf("\n"); return 0; }
Sekarang, inputan untuk ketiga variabel sukses di jalankan.
Dalam tutorial ini kita telah membahas cara penggunaan perintah scanf dalam bahasa pemrograman C. Perintah scanf dan printf adalah sarana input / output standar di dalam bahasa C. Kedua perintah ini akan sering kita pakai dalam pembahasan nantinya.
Untuk tutorial selanjutnya kita akan masuk ke bahasan tentang jenis-jenis tipe data di dalam bahasa C.
Mas, mau tanyak apakah kalau menggunakan kode ini
scanf(" %c",&huruf);
Ketika di enter DUA KALI program masih langsung berakhir tanpa sempat berhenti untuk menerima input untuk variabel huruf.
Program tidak akan berakhir. Dari yang saya coba, berapa kalipun enter di tekan, hanya akan memindahkan cursor ke bawah, tapi program masih menunggu untuk diinput 1 karakter.
bang, mau nanya. itu kalo program ke 3 saya beri variable kata dengan set string kok nggak bisa ya??
di build massages ada tulisan error:unknown type name'string'
(tipe string tidak dikenal)
Dalam bahasa C memang tidak tersedia tipe data string bawaan. Jika ingin membuat string, maka itu merupakan array dari char.
Tutorial lengkapnya nanti akan di bahas di Part 20 : https://www.duniailkom.com/tutorial-belajar-c-pengertian-dan-contoh-kode-program-tipe-data-string/
mas kok menginput data 2 kata yang di pisahkan spasi kenapa perintah selanjutnya langsung skip ya?
contoh ada 3 perintah input data
1.nama :
2.nim :
3.prodi :
saya input
1.nama : muhammad Arief
*input data langsung skip seperti……
1.nama : muhammad Arief
2.nim : 3.prodi :|
itu solusinya gimana ya?
kalo ga nginput spasi program ok-ok saja.
Dalam bahasa C, perintah scanf memang tidak bisa dipakai untuk membaca spasi. Solusinya bisa pakai perintah gets. Tutorialnya nanti ada di Part 21: https://www.duniailkom.com/tutorial-belajar-c-cara-membaca-string-dengan-scanf-dan-gets/
Dibelakangnya kasih \n
mas mau nanya, fungsi dari scanf("%[^\n], xxxx); " itu apa ya ?
fungsi %[^\n] pada scanf("%[^\n], xxxx);
Sepertinya itu semacam teknik untuk membaca string dengan scanf(). Secara bawaan, scanf() akan berhenti membaca inputan string ketika ketemu karakter spasi. Mengenai masalah ini saya bahas di https://www.duniailkom.com/tutorial-belajar-c-cara-membaca-string-dengan-scanf-dan-gets/
Dengan menulis %[^\n], maka itu akan menginstruksikan scanf() untuk terus membaca inputan sampai ketemu karakter enter atau newline. Karakter spasi ini dalam notasi komputer sering ditulis sebagai '\n'.
bang mau nanya.. apa bedanya scanf ("%d%d%d")
sama ("%d %d %d") spasinya gman ya bang?
kalo mw ngitung jumlahnya gman bang?
Mau Tanya kak, saya pakai vs code dan setiap saya membuat scanf pada program saya supata dapat di insertkan datanya, selalu malah jadi error kak programma running terus dan saat saya run lagi katanya "Code is already running!"