Mengendalikan Input Jenis Data yang Salah dalam C
Apabila membangunkan program C, adalah penting untuk memastikan pengendalian input pengguna yang mantap, terutamanya apabila menjangkakan khusus jenis data. Input yang menyimpang daripada jenis yang dijangkakan boleh membawa kepada kerosakan atur cara, seperti gelung tak terhingga.
Mari kita pertimbangkan senario di mana atur cara anda menggesa pengguna untuk integer, tetapi mereka tersilap memasukkan aksara. Jika program gagal mengendalikan input tidak sah ini, ia akan memasuki gelung tak terhingga, terus meminta integer walaupun menerima aksara.
Punca asas isu ini ialah tetapan input buruk std::cin " benderakan apabila input yang salah ditemui. Untuk menyelesaikan masalah ini, adalah perlu untuk mengosongkan bendera ini dan membuang input yang rosak daripada penimbal input.
Coretan kod berikut menggambarkan cara untuk mencapai 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"; }
Dalam kod ini, while loop dilaksanakan selagi input gagal (iaitu, tiada aksara dibaca). Di dalam gelung, cin.clear() mengosongkan bendera input buruk dan cin.ignore() membuang input yang salah daripada penimbal. Program ini kemudiannya menggesa pengguna untuk memasukkan semula nombor yang sah.
Sebagai alternatif, anda boleh mendapatkan input sebagai rentetan dan menukarnya kepada integer menggunakan std::stoi atau kaedah lain yang membenarkan pengesahan penukaran. Pendekatan ini membolehkan menyemak hasil penukaran dan mengendalikan input tidak sah dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Gelung Infinite Disebabkan oleh Input Jenis Data yang Salah dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!