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
Patricia Arquetteasal
2024-12-09 17:46:11179semak imbas

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";
}

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!

Kenyataan:
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