मैं कैसे निर्धारित करूं कि char
सी में a
या 9
कोई संख्या या एक पत्र है?निर्धारित करें कि char एक अंक या अक्षर
int a = Asc(theChar);
या इस:
इसका इस्तेमाल करने के लिए बेहतर है?
int a = (int)theChar
मैं कैसे निर्धारित करूं कि char
सी में a
या 9
कोई संख्या या एक पत्र है?निर्धारित करें कि char एक अंक या अक्षर
int a = Asc(theChar);
या इस:
इसका इस्तेमाल करने के लिए बेहतर है?
int a = (int)theChar
आप <ctype.h>
में isalpha()
और isdigit()
मानक कार्यों का उपयोग करना चाहते हैं।
char c = 'a'; // or whatever
if (isalpha(c)) {
puts("it's a letter");
} else if (isdigit(c)) {
puts("it's a digit");
} else {
puts("something else?");
}
इनमें से कोई भी उपयोगी नहीं है। मानक पुस्तकालय से isalpha()
या isdigit()
का उपयोग करें। वे <ctype.h>
में हैं।
यदि (theChar >= '0' && theChar <='9')
यह एक अंक है। तुम्हें नया तरीका मिल गया है।
<ctype.h>
अगर एक char
एक पत्र या एक नंबर, जैसे isalpha
, isdigit
और isalnum
का प्रतिनिधित्व करता है निर्धारित करने के लिए कार्यों की एक श्रृंखला शामिल है।
कारण int a = (int)theChar
ऐसा नहीं करेगा जो आप चाहते हैं क्योंकि a
केवल एक पूर्ण वर्ण का प्रतिनिधित्व करने वाले पूर्णांक मान को धारण करेगा। उदाहरण के लिए '9'
के लिए ASCII संख्या 57 है, और 'a'
के लिए यह ASCII के लिए इसके अलावा 97
है:
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
पर एक नजर डालें अपने लिए देखने के लिए ASCII table।
वर्ण सिर्फ पूर्णांक हैं, तो आप वास्तव में शाब्दिक के खिलाफ अपने चरित्र की एक सीधी तुलना कर सकते हैं:
if(c >= '0' && c <= '9'){
यह सभी वर्णों के लिए लागू होता है। See your ascii table।
ctype.h आपके लिए यह करने के लिए भी कार्य प्रदान करता है।
यह सही है, लेकिन इसलिए नहीं क्योंकि ASCII की गारंटी है, लेकिन अंकों की संगतता के कारण: http://stackoverflow.com/a/35936519/ 895,245 –
आप आम तौर पर अक्षरों या संख्याओं सरल शर्तों
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
अंक के लिए उपयोग करने के लिए जाँच कर सकते हैं आप उपयोग कर सकते
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
लेकिन सी में पात्रों के बाद से आंतरिक रूप से ASCII values रूप में माना जाता आप भी ASCII मूल्यों का उपयोग कर सकते इसे जांचने के लिए।
पर C99 मानक c >= '0' && c <= '9'
c >= '0' && c <= '9'
(उल्लेख in another answer) काम करता है क्योंकि C99 N1256 standard draft 5.2.1 "वर्ण सेट" कहते हैं:
दोनों स्रोत और निष्पादन बुनियादी चरित्र में सेट, दशमलव अंकों की उपरोक्त सूची में 0 के बाद प्रत्येक वर्ण का मान एक से अधिक होगा पिछले के मूल्य।
हालांकि ASCII की गारंटी नहीं है।
सभी मानक-अनुरूप कार्यान्वयन (ASCII या नहीं है) के लिए '0' <= x <= '9' के लिए चेक सही है। सी के लिए आवश्यक है कि दशमलव अंकों में एक संगत प्रतिनिधित्व हो। पत्रों के लिए, सभी दांव बंद हैं। – Wiz
@Wiz अच्छा! सी 99 5.2.1: http://stackoverflow.com/a/35936519/895245 –