Bidang spesifikasi format: scanf
dan wscanf
fungsi
Informasi di sini berlaku untuk seluruh scanf
keluarga fungsi, termasuk versi aman. Ini menjelaskan simbol yang digunakan untuk memberi tahu scanf
fungsi cara mengurai aliran input, seperti aliran stdin
input , ke dalam nilai yang dimasukkan ke dalam variabel program.
Argumen format
adalah string yang menentukan interpretasi input dan dapat berisi satu atau beberapa:
Karakter spasi putih: kosong (
\t
); atau baris baru (\n
). Karakter spasi putih menyebabkan pembacaanscanf
, tetapi tidak menyimpan, semua karakter spasi putih berturut-turut dalam input hingga karakter spasi non-putih berikutnya. Satu karakter spasi putih dalam format cocok dengan angka apa pun (termasuk 0) dan kombinasi karakter spasi putih dalam input.Karakter spasi non-putih, kecuali untuk tanda persen (
%
). Karakter non-spasi putih menyebabkanscanf
membaca, tetapi tidak menyimpan, karakter non-spasi kosong yang cocok. Jika karakter berikutnya dalam aliran input tidak cocok,scanf
akan dihentikan.Spesifikasi format, diperkenalkan oleh tanda persen (
%
). Spesifikasi format menyebabkanscanf
membaca dan mengonversi karakter dalam input menjadi nilai dari jenis tertentu. Nilai ditetapkan ke argumen dalam daftar argumen.Spesifikasi format memiliki formulir berikut:
%
[*
][width
][{h
ll
||L
l
|I64
|}]type
Di sini,
width
, ,l
h
,ll
,I64
, danL
mewakiliscanf
spesifikasi lebar, dantype
mewakiliscanf
karakter bidang jenis.
String format
argumen dibaca dari kiri ke kanan. Karakter di luar spesifikasi format diharapkan cocok dengan urutan karakter dalam aliran input. Karakter yang cocok dalam aliran input dipindai tetapi tidak disimpan. Jika karakter dalam aliran input bertentangan dengan spesifikasi format, scanf
dihentikan, dan karakter dibiarkan dalam aliran input seolah-olah belum dibaca.
Ketika spesifikasi format pertama ditemui, nilai bidang input pertama dikonversi sesuai dengan spesifikasi ini. Nilai ini disimpan di lokasi yang ditentukan oleh argumen pertama yang mengikuti format
argumen . Spesifikasi format kedua menyebabkan bidang input kedua dikonversi dan disimpan dalam argumen berikutnya, dan sebagainya, hingga akhir string format.
Bidang input didefinisikan sebagai: Semua karakter hingga karakter spasi putih pertama (spasi, tab, atau baris baru), atau hingga karakter pertama yang tidak dapat dikonversi sesuai dengan spesifikasi format, atau hingga lebar bidang (jika ditentukan) tercapai. Jika ada terlalu banyak argumen untuk spesifikasi yang diberikan, argumen tambahan dievaluasi tetapi diabaikan. Hasilnya tidak dapat diprediksi jika tidak ada cukup argumen untuk spesifikasi format.
Setiap bidang spesifikasi format adalah satu karakter atau angka yang menandakan opsi format tertentu. Karakter type
, yang muncul setelah bidang format opsional terakhir, menentukan apakah bidang input ditafsirkan sebagai karakter, string, atau angka.
Spesifikasi format paling sederhana hanya berisi tanda persen dan type
karakter (misalnya, %s
). Jika tanda persen (%
) diikuti oleh karakter yang tidak memiliki arti sebagai karakter kontrol format, karakter tersebut dan karakter berikut (hingga tanda persen berikutnya) diperlakukan sebagai urutan karakter biasa. Artinya, karakter diperlakukan sebagai urutan karakter yang harus cocok dengan input. Misalnya, untuk menentukan bahwa karakter tanda persen adalah menjadi input, gunakan %%
.
Tanda bintang (*
) setelah tanda persen menekan penetapan bidang input berikutnya, yang ditafsirkan sebagai bidang dari jenis yang ditentukan. Bidang dipindai tetapi tidak disimpan dalam argumen.
Versi aman (yang memiliki _s
akhiran) dari scanf
keluarga fungsi memerlukan setiap parameter jenis c
, , C
s
, S
atau [
untuk memiliki parameter ukuran buffer yang diteruskan segera setelahnya. Untuk informasi selengkapnya tentang versi aman keluarga scanf
fungsi, lihatscanf_s
, , _scanf_s_l
wscanf_s
, _wscanf_s_l
.
Lihat juga
scanf
Spesifikasi lebar
scanf
Ketik karakter bidang
scanf
, , _scanf_l
wscanf
,_wscanf_l
scanf_s
, , _scanf_s_l
wscanf_s
,_wscanf_s_l