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 , , E f , 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
.