Bagikan melalui


scanf ketik karakter bidang

Informasi berikut berlaku untuk salah scanf satu keluarga fungsi, termasuk versi aman, seperti scanf_s.

Karakter type adalah satu-satunya bidang format yang diperlukan; muncul setelah bidang format opsional apa pun. Karakter type menentukan apakah argumen terkait ditafsirkan sebagai karakter, string, atau angka.

type Karakter untuk scanf fungsi

karakter Jenis input yang diharapkan Tipe argumen Argumen ukuran dalam versi aman?
c Karakter. Saat digunakan dengan scanf fungsi, menentukan karakter byte tunggal; saat digunakan dengan wscanf fungsi, menentukan karakter lebar. Karakter spasi putih yang biasanya dilewati dibaca ketika c ditentukan. Tidak seperti bidang jenis lainnya, penentu lebar bidang menunjukkan jumlah karakter yang tepat, bukan maksimum. Untuk membaca karakter byte tunggal non-spasi putih berikutnya, gunakan %1s; untuk membaca karakter lebar non-spasi putih berikutnya, gunakan %1ws. Penunjuk ke char saat digunakan dengan scanf fungsi, penunjuk ke wchar_t saat digunakan dengan wscanf fungsi. Harus diisi. Ukuran tidak menyertakan ruang untuk terminator null.
C Karakter ukuran yang berlawanan. Saat digunakan dengan scanf fungsi, menentukan karakter lebar; saat digunakan dengan wscanf fungsi, menentukan karakter byte tunggal. Karakter spasi putih yang biasanya dilewati dibaca ketika C ditentukan. Tidak seperti bidang jenis lainnya, penentu lebar bidang menunjukkan jumlah karakter yang tepat, bukan maksimum. Untuk membaca karakter byte tunggal non-spasi putih berikutnya, gunakan %1s; untuk membaca karakter lebar non-spasi putih berikutnya, gunakan %1ws. Penunjuk ke wchar_t saat digunakan dengan scanf fungsi, penunjuk ke char saat digunakan dengan wscanf fungsi. Harus diisi. Argumen ukuran tidak menyertakan spasi untuk terminator null.
d Bilangan bulat desimal. Penunjuk ke int. Tidak.
i Bilangan bulat. Heksadesimal jika string input dimulai dengan "0x" atau "0X", oktal jika string dimulai dengan "0", jika tidak desimal. Penunjuk ke int. Tidak.
o Bilangan bulat oktal. Penunjuk ke int. Tidak.
p Alamat penunjuk dalam digit heksadesimal. Jumlah maksimum digit yang dibaca tergantung pada ukuran pointer (32 bit atau 64 bit), yang tergantung pada arsitektur komputer. "0x" atau "0X" diterima sebagai awalan. Penunjuk ke void*. Tidak.
u Bilangan bulat desimal yang tidak ditandatangani. Penunjuk ke unsigned int. Tidak.
x Bilangan bulat heksadesimal. Penunjuk ke int. Tidak.
e, , Ef, F, , g,G Nilai floating-point yang terdiri dari tanda opsional (+ atau -), rangkaian satu atau beberapa digit desimal yang berisi titik desimal, dan eksponen opsional ("e" atau "E") diikuti dengan nilai bilangan bulat yang ditandatangani secara opsional. Penunjuk ke float. Tidak.
a, A Nilai floating-point yang terdiri dari serangkaian satu atau beberapa digit heksadesimal yang berisi titik desimal opsional, dan eksponen ("p" atau "P") diikuti dengan nilai desimal. Penunjuk ke float. Tidak.
n Tidak ada input yang dibaca dari stream atau buffer. Penunjuk ke int, di mana jumlah karakter yang disimpan berhasil dibaca dari aliran atau buffer hingga titik tersebut dalam panggilan saat ini ke scanf fungsi atau wscanf fungsi. Tidak.
s String, hingga karakter spasi putih pertama (spasi, tab, atau baris baru). Untuk membaca string yang tidak dibatasi oleh karakter spasi, gunakan sekumpulan tanda kurung siku ([ ]), seperti yang dibahas dalam scanf Spesifikasi Lebar. Ketika digunakan dengan scanf fungsi, menandakan array karakter byte tunggal; ketika digunakan dengan wscanf fungsi, menandakan array karakter lebar. Dalam kedua kasus, array karakter harus cukup besar untuk bidang input ditambah mengakhiri karakter null, yang ditambahkan secara otomatis. Harus diisi. Ukuran mencakup ruang untuk terminator null.
S String karakter berlawanan ukuran, hingga karakter spasi putih pertama (spasi, tab, atau baris baru). Untuk membaca string yang tidak dibatasi oleh karakter spasi, gunakan sekumpulan tanda kurung siku ([ ]), seperti yang dibahas dalam scanf Spesifikasi Lebar. Ketika digunakan dengan scanf fungsi, menandakan array karakter lebar; ketika digunakan dengan wscanf fungsi, menandakan array karakter byte tunggal. Dalam kedua kasus, array karakter harus cukup besar untuk bidang input ditambah mengakhiri karakter null, yang ditambahkan secara otomatis. Harus diisi. Ukuran mencakup ruang untuk terminator null.

Argumen ukuran, jika perlu, harus diteruskan dalam daftar parameter segera mengikuti argumen yang diterapkan. Misalnya, kode berikut:

char string1[11], string2[9];
scanf_s("%10s %8s", string1, 11, string2, 9);

membaca string dengan panjang maksimum 10 ke dalam string1, dan string dengan panjang maksimum 8 menjadi string2. Ukuran buffer harus setidaknya satu lebih dari spesifikasi lebar karena ruang harus dicadangkan untuk terminator null.

String format dapat menangani byte tunggal atau input karakter lebar terlepas dari apakah karakter byte tunggal atau versi karakter lebar fungsi digunakan. Dengan demikian, untuk membaca karakter byte tunggal atau lebar dengan scanf fungsi dan wscanf fungsi, gunakan penentu format sebagai berikut.

Untuk membaca karakter sebagai Gunakan fungsi ini Dengan penentu format ini
byte tunggal Fungsi scanf c, hc, atau hC
byte tunggal Fungsi wscanf C, hc, atau hC
lebar Fungsi wscanf c, lc, atau lC
lebar Fungsi scanf C, lc, atau lC

Untuk memindai string dengan scanf fungsi, dan wscanf fungsi, gunakan tabel di atas dengan format type-specifier s dan S bukan c dan C.

Lihat juga

scanf, , _scanf_lwscanf,_wscanf_l