Rumah >pembangunan bahagian belakang >C++ >Sekiranya saya menggunakan char atau int untuk pengesahan input dalam C?
isdigit(c) - Menggunakan char vs. int untuk Pengesahan Input
Apabila memeriksa kod anda, yang bertujuan untuk mengesahkan input pengguna sebagai digit, persoalan timbul: apakah jenis pembolehubah input - char atau int?
Memahami dilema ini memerlukan menyelidiki selok-belok fungsi isdigit dalam C. Bertentangan dengan namanya, isdigit mengharapkan hujah integer, menimbulkan kebimbangan tentang keserasian dengan input aksara.
Penjelasan terletak pada sejarah C, khususnya getchar(), yang mendapatkan semula aksara sebagai integer untuk menampung kedua-dua kod aksara dan kod ralat (nilai negatif yang mewakili EOF). Reka bentuk ini mencipta isu keserasian dengan char, yang boleh sama ada ditandatangani atau tidak ditandatangani bergantung pada pengkompil.
Char yang ditandatangani memberikan cabaran kerana nilai negatif bertindih dengan EOF, yang berpotensi membawa kepada ralat. Oleh itu, isdigit dan fungsi yang berkaitan memerlukan input yang dianggap sebagai aksara tidak bertanda untuk memastikan positif.
Untuk memastikan keserasian, ubah suai kod anda seperti berikut:
<code class="c">if(isdigit((unsigned char)c))</code>
Selain itu, adalah penting untuk mengesahkan bahawa strim input adalah sah sebelum menggunakan c kerana strim tertutup boleh meninggalkannya tanpa dimulakan.
Atas ialah kandungan terperinci Sekiranya saya menggunakan char atau int untuk pengesahan input dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!