Memahami Gelung Tak Terhingga Apabila Memasukkan Huruf Daripada Nombor
Apabila melaksanakan atur cara yang menggesa input integer, adalah perkara biasa untuk menghadapi gelung tak terhingga jika pengguna memasukkan huruf dan bukannya nombor. Isu ini timbul disebabkan oleh cara pengendalian input berfungsi dalam C .
Punca Punca:
Dalam C , fungsi cin digunakan untuk membaca input. Walau bagaimanapun, jika aksara bukan angka dimasukkan, cin gagal mengeluarkan integer yang sah. Akibatnya, bendera failbit ditetapkan dalam objek aliran cin, menunjukkan ralat.
Membetulkan Gelung Infinite:
Untuk menyelesaikan gelung tak terhingga, kita perlu untuk mengesan dan mengendalikan senario input yang tidak sah. Berikut ialah bahagian kod yang diubah suai yang membetulkan isu ini:
#include <limits> // Includes numeric_limits for input validation // (...) Existing code // user enters a number cout << "\nPlease enter a positive number and press Enter: \n"; do { while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; // Clear the failbit and ignore the remaining input 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);
Penjelasan:
Dengan pembetulan ini, program kini akan menggelung hanya apabila integer positif yang sah dimasukkan, menghalang gelung tak terhingga disebabkan oleh input tidak sah.
Atas ialah kandungan terperinci Mengapa Surat Menyebabkan Gelung Infiniti dalam Program Input Nombor C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!