Fungsi ini digunakan untuk mendapatkan nilai yang diinputkan oleh pemakai program. Untuk mendapatkan nilai yang diinputkan, fungsi ini menggunakan operator pengalamatan (”&“) di depan nama variabel yang akan menampungnya.
Format umumnya mirip dengan fungsi printf(). Namun demikian terdapat beberapa perbedaan :
| Format | printf() | scanf() |
| karakter | %c | %c |
| string | %s | %s |
| integer | %d | %d |
| unsigned integer desimal | %u | %u |
| unsigned integer heksadesimal (menggunakan “ABCDEF”) | %x | %x |
| unsigned integer oktal | %o | %o |
| floating-point (notasi desimal) | %f | %f atau %e |
| floating-point (notasi eksponensial) | %e | %f atau %e |
| floating-point (%f atau %e yang terpendek) | %g | tidak ada |
Pada scanf(), %e dapat digunakan sebagai pengganti %l, akibatnya sama saja. Kita dapat mengisikan input dengan notasi eksponensial maupun desimal, keduanya dapat diterima oleh %e dan %f. Penentu %g yang memungkinkan fungsi printf() memilih notasi eksponensial atau desimal tergantung mana yang terpendek, tidak dihiraukan oleh scanf() karena pada scanf() pemakailah yang menentukan hal tersebut.
Untuk menangani long integer fungsi scanf() menggunakan %D, %U, %X dan %O yang masing bersesuaian dengan %d, %u, %x dan %o.
Fungsi scanf() dapat menerima input beberapa nilai untuk ditampung di beberapa variabel sekaligus.
File sekaligus.c
#include <stdio.h>
main(){
char nim[7], nama[20];
float nilai;
printf(”ISIKAN DATA NIM, NAMA, NILAI : “);
scanf(”%s %s %f”, &nim, &nama, &nilai);
printf(”Mahasiswa dengan NIP = %s, NAMA = %s mempunyai NILAI =
%f\n”, nim, nama, nilai);
}
$ gcc -o sekaligus sekaligus.c
$ ./sekaligus
ISIKAN DATA NIM, NAMA, NILAI : 200701002 dody 89.67
Mahasiswa dengan NIP = 200701002, NAMA = dody mempunyai NILAI = 89.669998
$
Untuk memisahkan nilai input antar variabel dapat digunakan karakter kosong (whitespace) yang meliputi spasi, tab dan enter
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa