Isu Gelung Tak Terhingga dalam Program C Menerima Surat sebagai Input Integer
Isu ini timbul apabila atur cara menjangkakan input integer, tetapi pengguna masuk sepucuk surat sebaliknya. Program ini memasuki gelung tak terhingga disebabkan oleh watak yang tidak dijangka dalam aliran input. Ini menghasilkan paparan berterusan mesej "Nombor yang anda masukkan adalah negatif. Sila masukkan nombor positif untuk meneruskan." tanpa memberi pengguna peluang untuk memasukkan nombor yang sah.
Penjelasan
Sebab asas isu ini terletak pada gelagat aliran input C. Apabila pengguna memasukkan aksara bukan angka, bendera "failbit" aliran input ditetapkan. Walau bagaimanapun, strim tidak dikosongkan, jadi program kekal tersekat dalam lelaran gelung yang sama, cuba membaca aksara tidak sah berulang kali.
Penyelesaian
Untuk menyelesaikan masalah ini , adalah perlu untuk melaksanakan pengesahan input yang betul dan pengendalian ralat. Berikut ialah contoh cara menangani isu ini:
#include <iostream> #include <limits> // ... (remaining code) cout << "\nPlease enter a positive number and press Enter: \n"; 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);
Dalam kod yang diubah suai ini:
Atas ialah kandungan terperinci Mengapa Input Surat Menyebabkan Gelung Infinite dalam Program C Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!