Mengesahkan Input Numerik dalam C
Dalam program yang memproses input integer, memastikan pengguna memberikan nombor yang sah adalah penting. Malangnya, fungsi atoi() gagal apabila berurusan dengan integer berbilang digit. Artikel ini meneroka kaedah alternatif untuk mengesahkan input berangka.
Menggunakan failbit
Strim input C (cin) menetapkan failbit apabila ia menemui input ia tidak boleh menghuraikan. Ini boleh dimanfaatkan untuk mengesahkan input seperti berikut:
int n; cin >> n; if(!cin) { // User did not input a number cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
Mengendalikan Limpahan Input
Apabila integer melebihi nilai maksimum yang dibenarkan, cin juga menetapkan failbit. Untuk mengelakkan ini, semak keadaan strim sebelum membaca input:
while(!cin.eof()) { int n; cin >> n; if(!cin) { // Input error occurred cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } else { // Valid input process(n); } }
Gelung ini meneruskan membaca dan mengesahkan input sehingga akhir fail (EOF) dicapai.
Lain-lain Alternatif
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Input Berangka dalam C Beyond `atoi()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!