Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencegah Gelung Infinite Apabila Memasukkan Nilai Bukan Angka dalam C ?

Bagaimana untuk Mencegah Gelung Infinite Apabila Memasukkan Nilai Bukan Angka dalam C ?

Barbara Streisand
Lepaskan: 2024-12-13 12:45:10
asal
302 orang telah melayarinya

How to Prevent Infinite Loops When Inputting Non-Numeric Values in C  ?

Gelung Infinite apabila Memasukkan Huruf Daripada Nombor

Apabila menghadapi input aksara dan bukannya integer, kod yang disediakan akan jatuh ke dalam gelung tak terhingga sambil memaparkan mesej "Nombor yang anda masukkan adalah negatif. Sila masukkan nombor positif untuk meneruskan." Ini berlaku disebabkan oleh perkara berikut:

Isu:

Strim cin tidak dikendalikan dengan betul apabila ia menemui input tidak sah (karakter dalam kes ini). Ia meninggalkan strim dalam keadaan yang salah, dikenali sebagai bendera "failbit" sedang ditetapkan.

Penyelesaian:

Untuk menyelesaikan isu ini, laksanakan langkah berikut:

  • Semak input yang berjaya apabila membaca nombor (menggunakan cin dengan operator manipulasi aliran >>):

    while (!(cin >> num1)) {
        cout << "Incorrect input. Please try again.\n";
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    Salin selepas log masuk
  • Kosongkan strim dan abaikan aksara input yang salah jika cin gagal (menggunakan clear() dan ignore()):

    • cin.clear() mengosongkan "failbit" bendera.
    • cin.ignore(numeric_limits::max(), 'n') mengalih keluar semua aksara daripada penimbal strim sehingga dan termasuk aksara baris baharu seterusnya ('n').

Dengan melaksanakan langkah-langkah ini, program akan mengesan input yang tidak sah, mengosongkan strim dan menggesa pengguna untuk memasukkan integer positif, membenarkan atur cara diteruskan tanpa gelung tak terhingga.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Memasukkan Nilai Bukan Angka dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan