Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencegah Gelung Infinite Apabila Mengambil Input Integer dalam C ?

Bagaimana untuk Mencegah Gelung Infinite Apabila Mengambil Input Integer dalam C ?

Linda Hamilton
Lepaskan: 2024-12-03 04:23:10
asal
743 orang telah melayarinya

How to Prevent Infinite Loops When Taking Integer Input in C  ?

Isu Gelung Infinite dengan Input Aksara

Apabila melaksanakan kod yang disediakan, gelung tak terhingga berlaku jika aksara bukan integer dimasukkan dan bukannya nombor. Tingkah laku ini timbul semasa proses pengesahan untuk nombor positif.

Secara khusus, isu ini terletak dalam gelung sementara dalam yang menyemak kesahihan num1. Jika aksara huruf dimasukkan, cin >> pernyataan num1 gagal, menetapkan bendera failbit. Walau bagaimanapun, penimbal cin tidak dikosongkan, membawa kepada andaian yang salah bahawa input tidak sah yang sama berterusan.

Membetulkan Isu

Untuk menangani isu ini, logik tambahan ialah diperlukan untuk mengendalikan input tidak sah dan mengosongkan penimbal cin:

    do {    
        while(!(cin >> num1)) {
            cout << "Incorrect input. Please try again.\n";
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
        }
        if(num1 < 0) cout << "The number you entered is negative. Please enter a positive number to continue.\n";
    } while(num1 < 0);
Salin selepas log masuk

Dalam kod yang diubah suai ini, gelung do-while luar digunakan untuk menggesa input secara berterusan sehingga integer positif yang sah dimasukkan.

Selepas aksara yang tidak sah dimasukkan, cin.clear() dipanggil untuk menetapkan semula bendera failbit. Selepas itu, cin.ignore() digunakan untuk membuang semua aksara yang tinggal daripada penimbal input, termasuk aksara tidak sah dan mana-mana aksara ruang putih atau baris baharu yang mungkin mengikuti. Argumen numeric_limits::max() menentukan bahawa semua aksara sehingga baris baharu seterusnya diabaikan.

Dengan pelarasan ini, kod memastikan bahawa hanya input integer yang sah diproses dan gelung tak terhingga dielakkan apabila bukan- aksara integer dimasukkan.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Mengambil Input Integer 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