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

Bagaimana untuk Mengendalikan Input Jenis Data yang Salah dan Mengelakkan Gelung Infinite dalam C?

Patricia Arquette
Lepaskan: 2024-12-09 17:46:11
asal
178 orang telah melayarinya

How to Handle Incorrect Data Type Input and Avoid Infinite Loops in C  ?

Mengendalikan Input Jenis Data yang Salah dalam C

Dalam C , input jenis data yang salah boleh membawa kepada gelung tak terhingga apabila program gagal memproses input daripada jenis yang dijangkakan. Sebagai contoh, jika integer diminta tetapi aksara dimasukkan, atur cara mungkin memasuki gelung input yang tidak berkesudahan.

Penyelesaian:

Isu asas ialah tetapan "bendera input buruk" dalam std::cin apabila input tidak mematuhi jenis yang diharapkan. Untuk menangani perkara ini:

  1. Kosongkan Bendera Input Buruk: Gunakan std::cin.clear() untuk menetapkan semula bendera, menunjukkan bahawa input kini boleh diterima.
  2. Buang Input Buruk: Gunakan std::cin.ignore() untuk mengalih keluar input yang salah daripada penimbal input.

Coretan kod berikut menunjukkan penyelesaian ini:

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

Gelung kod ini berterusan sehingga input yang sah diberikan.

Sebagai alternatif , seseorang boleh mendapatkan input sebagai rentetan dan menukarnya kepada integer menggunakan std::stoi atau kaedah serupa yang membolehkan penukaran pengesahan.

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