2011-12-23 13 views

उत्तर

71

आप <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?"); 
} 
10

इनमें से कोई भी उपयोगी नहीं है। मानक पुस्तकालय से isalpha() या isdigit() का उपयोग करें। वे <ctype.h> में हैं।

4

यदि (theChar >= '0' && theChar <='9') यह एक अंक है। तुम्हें नया तरीका मिल गया है।

12

<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

+1

सभी मानक-अनुरूप कार्यान्वयन (ASCII या नहीं है) के लिए '0' <= x <= '9' के लिए चेक सही है। सी के लिए आवश्यक है कि दशमलव अंकों में एक संगत प्रतिनिधित्व हो। पत्रों के लिए, सभी दांव बंद हैं। – Wiz

+0

@Wiz अच्छा! सी 99 5.2.1: http://stackoverflow.com/a/35936519/895245 –

16

वर्ण सिर्फ पूर्णांक हैं, तो आप वास्तव में शाब्दिक के खिलाफ अपने चरित्र की एक सीधी तुलना कर सकते हैं:

if(c >= '0' && c <= '9'){ 

यह सभी वर्णों के लिए लागू होता है। See your ascii table

ctype.h आपके लिए यह करने के लिए भी कार्य प्रदान करता है।

+0

यह सही है, लेकिन इसलिए नहीं क्योंकि ASCII की गारंटी है, लेकिन अंकों की संगतता के कारण: http://stackoverflow.com/a/35936519/ 895,245 –

1

आप आम तौर पर अक्षरों या संख्याओं सरल शर्तों

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 मूल्यों का उपयोग कर सकते इसे जांचने के लिए।

How to check if a character is number or letter

1

पर C99 मानक c >= '0' && c <= '9'

c >= '0' && c <= '9' (उल्लेख in another answer) काम करता है क्योंकि C99 N1256 standard draft 5.2.1 "वर्ण सेट" कहते हैं:

दोनों स्रोत और निष्पादन बुनियादी चरित्र में सेट, दशमलव अंकों की उपरोक्त सूची में 0 के बाद प्रत्येक वर्ण का मान एक से अधिक होगा पिछले के मूल्य।

हालांकि ASCII की गारंटी नहीं है।

संबंधित मुद्दे