Bagikan melalui


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 stdininput , 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 ( ); tab (\t); atau baris baru (\n). Karakter spasi putih menyebabkan pembacaan scanf , 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 menyebabkan scanf 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 menyebabkan scanf 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|l|ll|I64|L}]type

    Di sini, width, , lh, ll, I64, dan L mewakili scanfspesifikasi lebar, dan type mewakili scanfkarakter 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, , Cs, S atau [ untuk memiliki parameter ukuran buffer yang diteruskan segera setelahnya. Untuk informasi selengkapnya tentang versi aman keluarga scanf fungsi, lihatscanf_s , , _scanf_s_lwscanf_s, _wscanf_s_l.

Baca juga

scanf Spesifikasi lebar
scanf Ketik karakter bidang
scanf, _scanf_l, wscanf, _wscanf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l