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

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

Barbara Streisand
Lepaskan: 2024-12-13 10:30:13
asal
288 orang telah melayarinya

How to Prevent Infinite Loops from Incorrect Data Type Input in C  ?

Mengendalikan Input Jenis Data yang Salah dalam C

Memastikan bahawa pengguna menyediakan jenis data yang sesuai adalah penting untuk mencegah kelakuan yang tidak dijangka dan gelung yang tidak terhingga. Dalam C , pengendalian input yang salah boleh menjadi mencabar.

Pernyataan Masalah:

Apabila atur cara menjangkakan input integer dan pengguna memasukkan aksara, atur cara memasuki infiniti gelung. Sebaliknya, isu yang sama berlaku apabila integer dijangka tetapi aksara dimasukkan.

Penyelesaian:

Gelung tak terhingga berlaku kerana input buruk fungsi std::cin bendera ditetapkan apabila input gagal. Untuk menyelesaikannya, kita perlu:

  • Kosongkan bendera input buruk: std::cin.clear();
  • Buang yang tidak sah input daripada penimbal: std::cin.ignore(std::numeric_limits::max(), 'n');

Berikut ialah contoh coretan kod:

while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); // clear bad input flag
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // discard input
    std::cout << "Invalid input; please re-enter.\n";
}
Salin selepas log masuk

Kod ini berpusing sehingga pengguna memasukkan nombor yang sah. Ia mengosongkan bendera input buruk, membuang input tidak sah dan menggesa pengguna untuk mencuba lagi.

Pendekatan Alternatif:

Daripada menggunakan std::cin, anda juga boleh mendapatkan input sebagai rentetan dan menukarnya kepada integer menggunakan std::stoi. Pendekatan ini membolehkan anda mengesahkan penukaran sebelum memberikan input kepada pembolehubah integer.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Gelung Infinite daripada 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