Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mencegah Gelung Infinite Apabila Mengendalikan Input Jenis Data yang Salah dalam C?

Bagaimana untuk Mencegah Gelung Infinite Apabila Mengendalikan Input Jenis Data yang Salah dalam C?

Susan Sarandon
Lepaskan: 2024-12-12 15:18:10
asal
480 orang telah melayarinya

How to Prevent Infinite Loops When Handling Erroneous Data Type Input in C  ?

Cara Menangani Input Jenis Data yang Ralat

Dalam C , menangani input tidak sah adalah penting untuk mengekalkan integriti program. Sebagai contoh, apabila meminta integer dan menghadapi input aksara, atur cara harus menangani ralat dengan anggun dan meminta input yang betul sekali lagi. Walau bagaimanapun, menghadapi input daripada jenis yang tidak dijangka boleh membawa kepada gelung tak terhingga.

Sebab Gelung Tak Terhingga

Gelung tak terhingga timbul kerana bendera "input buruk" strim input ialah ditetapkan apabila input yang dijangkakan tidak diterima. Bendera input buruk mesti dikosongkan secara manual dan input yang salah dibuang daripada penimbal strim.

Penyelesaian Menggunakan Pengesahan Input

Untuk mengelakkan gelung tak terhingga, gunakan yang berikut pendekatan:

// Loop if input fails (e.g., no characters were read)
while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); // Clear the bad input flag
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard the input
    std::cout << "Invalid input; please re-enter.\n";
}
Salin selepas log masuk

Input Alternatif Pendekatan

Daripada menggunakan pengesahan input, anda boleh mendapatkan input sebagai rentetan dan kemudian cuba menukarnya kepada integer menggunakan std::stoi atau kaedah serupa yang menyediakan semakan status penukaran.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite Apabila Mengendalikan Input Jenis Data yang Salah 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