Arduino - चरित्र कार्य

सभी डेटा को कंप्यूटर में वर्ण के रूप में दर्ज किया जाता है, जिसमें अक्षर, अंक और विभिन्न विशेष प्रतीक शामिल होते हैं। इस अनुभाग में, हम व्यक्तिगत पात्रों की जांच और हेरफेर के लिए C ++ की क्षमताओं पर चर्चा करते हैं।

चरित्र-हैंडलिंग लाइब्रेरी में कई फ़ंक्शन शामिल होते हैं जो चरित्र डेटा के उपयोगी परीक्षण और जोड़तोड़ करते हैं। प्रत्येक फ़ंक्शन को एक चरित्र प्राप्त होता है, जिसे एक तर्क के रूप में इंट, या ईओएफ के रूप में दर्शाया जाता है। वर्णों को अक्सर पूर्णांक के रूप में हेरफेर किया जाता है।

याद रखें कि ईओएफ का मूल्य सामान्य तौर पर -1 होता है और यह कि कुछ हार्डवेयर आर्किटेक्चर चार वैरिएबल में नकारात्मक मूल्यों को जमा नहीं होने देते हैं। इसलिए, चरित्र-हैंडलिंग फ़ंक्शन पूर्णांक के रूप में वर्णों में हेरफेर करते हैं।

निम्न तालिका वर्ण-हैंडलिंग लाइब्रेरी के कार्यों को सारांशित करती है। चरित्र-हैंडलिंग लाइब्रेरी से कार्यों का उपयोग करते समय, शामिल करें<cctype> हैडर।

क्र.सं. प्रोटोटाइप और विवरण
1

int isdigit( int c )

1 रिटर्न अगर c एक अंक है और 0 अन्यथा।

2

int isalpha( int c )

1 रिटर्न अगर c एक अक्षर है और 0 अन्यथा।

3

int isalnum( int c )

1 रिटर्न अगर c एक अंक या एक पत्र है और 0 अन्यथा।

4

int isxdigit( int c )

1 रिटर्न अगर c एक हेक्साडेसिमल अंक चरित्र है और 0 अन्यथा।

(बाइनरी, ऑक्टल, दशमलव और हेक्साडेसिमल संख्याओं की विस्तृत व्याख्या के लिए परिशिष्ट डी, संख्या प्रणाली देखें।)

5

int islower( int c )

1 रिटर्न अगर c एक लोअरकेस लेटर है और 0 नहीं तो।

6

int isupper( int c )

1 रिटर्न अगर c एक अपरकेस अक्षर है; 0 अन्यथा।

7

int isspace( int c )

रिटर्न 1 अगर c एक सफ़ेद-स्थान वर्ण है - newline ('\ n'), स्थान

(''), फ़ॉर्म फ़ीड ('\ f'), गाड़ी वापसी ('\ r'), क्षैतिज टैब ('\ t'), या ऊर्ध्वाधर टैब ('\ v') - और 0 अन्यथा।

8

int iscntrl( int c )

रिटर्न 1 यदि c एक नियंत्रण वर्ण है, जैसे कि newline ('\ n'), फ़ॉर्म फ़ीड ('\ f'), गाड़ी वापसी ('\ r'), क्षैतिज टैब ('\ t'), ऊर्ध्वाधर टैब (' \ v '), अलर्ट (' ए '), या बैकस्पेस (' \ b ') - और 0 अन्यथा।

9

int ispunct( int c )

अगर अंतरिक्ष, अंक, या पत्र और 0 के अलावा अन्य मुद्रण चरित्र है तो 1 रिटर्न देता है।

10

int isprint( int c )

1 रिटर्न अगर c एक मुद्रण वर्ण है जिसमें अंतरिक्ष ('') और 0 शामिल हैं।

1 1

int isgraph( int c )

1 रिटर्न अगर c एक मुद्रण वर्ण है जो अंतरिक्ष ('') और 0 के अलावा है।

उदाहरण

निम्न उदाहरण कार्यों के उपयोग को दर्शाता है isdigit, isalpha, isalnum तथा isxdigit। समारोहisdigitनिर्धारित करता है कि क्या इसका तर्क एक अंक (0–9) है। कार्यक्रमisalphaनिर्धारित करता है कि क्या इसका तर्क एक अपरकेस अक्षर (AZ) या एक निचला अक्षर (a-z) है। कार्यक्रमisalnumनिर्धारित करता है कि इसका तर्क एक अपरकेस, लोअरकेस अक्षर या एक अंक है। समारोहisxdigit निर्धारित करता है कि इसका तर्क एक हेक्साडेसिमल अंक (ए-एफ, ए-एफ, 0–9) है।

उदाहरण 1

void setup () {
   Serial.begin (9600);
   Serial.print ("According to isdigit:\r");
   Serial.print (isdigit( '8' ) ? "8 is a": "8 is not a");
   Serial.print (" digit\r" );
   Serial.print (isdigit( '8' ) ?"# is a": "# is not a") ;
   Serial.print (" digit\r");
   Serial.print ("\rAccording to isalpha:\r" );
   Serial.print (isalpha('A' ) ?"A is a": "A is not a");
   Serial.print (" letter\r");
   Serial.print (isalpha('A' ) ?"b is a": "b is not a");
   Serial.print (" letter\r");
   Serial.print (isalpha('A') ?"& is a": "& is not a");
   Serial.print (" letter\r");
   Serial.print (isalpha( 'A' ) ?"4 is a":"4 is not a");
   Serial.print (" letter\r");
   Serial.print ("\rAccording to isalnum:\r");
   Serial.print (isalnum( 'A' ) ?"A is a" : "A is not a" );

   Serial.print (" digit or a letter\r" );
   Serial.print (isalnum( '8' ) ?"8 is a" : "8 is not a" ) ;
   Serial.print (" digit or a letter\r");
   Serial.print (isalnum( '#' ) ?"# is a" : "# is not a" );
   Serial.print (" digit or a letter\r");
   Serial.print ("\rAccording to isxdigit:\r");
   Serial.print (isxdigit( 'F' ) ?"F is a" : "F is not a" );
   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( 'J' ) ?"J is a" : "J is not a" ) ;
   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( '7' ) ?"7 is a" : "7 is not a" ) ;

   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( '$' ) ? "$ is a" : "$ is not a" );
   Serial.print (" hexadecimal digit\r" );
   Serial.print (isxdigit( 'f' ) ? “f is a" : "f is not a");
   
}

void loop () {

}

परिणाम

According to isdigit:
8 is a digit
# is not a digit
According to isalpha:
A is a letter
b is a letter
& is not a letter
4 is not a letter
According to isalnum:
A is a digit or a letter

8 is a digit or a letter
# is not a digit or a letter
According to isxdigit:
F is a hexadecimal digit
J is not a hexadecimal digit
7 is a hexadecimal digit

$ is not a hexadecimal digit
f is a hexadecimal digit

हम सशर्त ऑपरेटर का उपयोग करते हैं (?:)प्रत्येक फ़ंक्शन के साथ यह निर्धारित करने के लिए कि क्या स्ट्रिंग "एक" है या स्ट्रिंग "नहीं है" को प्रत्येक वर्ण के लिए आउटपुट में मुद्रित किया जाना चाहिए। उदाहरण के लिए, रेखाa इंगित करता है कि यदि '8' एक अंक है - यानी, यदि isdigitएक सही (नॉनज़रो) मान लौटाता है - स्ट्रिंग "8 एक" मुद्रित है। यदि '8' अंक नहीं है (यानी, यदिisdigit रिटर्न 0), स्ट्रिंग "8 नहीं है" मुद्रित है।

उदाहरण 2

निम्न उदाहरण कार्यों के उपयोग को दर्शाता है islower तथा isupper। कार्यक्रमislowerनिर्धारित करता है कि क्या इसका तर्क एक लोअरकेस लेटर (a-z) है। समारोहisupper निर्धारित करता है कि क्या इसका तर्क एक अपरकेस अक्षर (A-Z) है।

int thisChar = 0xA0;

void setup () {
   Serial.begin (9600);
   Serial.print ("According to islower:\r") ;
   Serial.print (islower( 'p' ) ? "p is a" : "p is not a" );
   Serial.print ( " lowercase letter\r" );
   Serial.print ( islower( 'P') ? "P is a" : "P is not a") ;
   Serial.print ("lowercase letter\r");
   Serial.print (islower( '5' ) ? "5 is a" : "5 is not a" );
   Serial.print ( " lowercase letter\r" );
   Serial.print ( islower( '!' )? "! is a" : "! is not a") ;
   Serial.print ("lowercase letter\r");

   Serial.print ("\rAccording to isupper:\r") ;
   Serial.print (isupper ( 'D' ) ? "D is a" : "D is not an" );
   Serial.print ( " uppercase letter\r" );
   Serial.print ( isupper ( 'd' )? "d is a" : "d is not an") ;
   Serial.print ( " uppercase letter\r" );
   Serial.print (isupper ( '8' ) ? "8 is a" : "8 is not an" );
   Serial.print ( " uppercase letter\r" );
   Serial.print ( islower( '$' )? "$ is a" : "$ is not an") ;
   Serial.print ("uppercase letter\r ");
}

void setup () {

}

परिणाम

According to islower:
p is a lowercase letter
P is not a lowercase letter
5 is not a lowercase letter
! is not a lowercase letter

According to isupper:
D is an uppercase letter
d is not an uppercase letter
8 is not an uppercase letter
$ is not an uppercase letter

उदाहरण 3

निम्न उदाहरण कार्यों के उपयोग को दर्शाता है isspace, iscntrl, ispunct, isprint तथा isgraph

  • कार्यक्रम isspace यह निर्धारित करता है कि इसका तर्क श्वेत-अन्तरिक्ष वर्ण है, जैसे कि स्पेस (''), फॉर्म फीड ('\ f'), न्यूलाइन ('\ n'), गाड़ी वापसी ('\ r'), क्षैतिज टैब ('\') t ') या वर्टिकल टैब (' \ v ')।

  • कार्यक्रम iscntrl यह निर्धारित करता है कि इसका तर्क क्षैतिज टैब ('\ t'), ऊर्ध्वाधर टैब ('\ v'), फ़ॉर्म फ़ीड ('\ f'), चेतावनी ('\' '), बैकस्पेस (' \ b) जैसे नियंत्रण वर्ण है या नहीं '), गाड़ी वापसी (' \ r ') या नई रेखा (' \ n ')।

  • कार्यक्रम ispunct निर्धारित करता है कि इसका तर्क किसी स्थान, अंक या अक्षर, जैसे $, #, (,,), [,], {,},},:, या% के अलावा एक मुद्रण वर्ण है या नहीं।

  • कार्यक्रम isprint यह निर्धारित करता है कि क्या इसका तर्क एक ऐसा चरित्र है जिसे स्क्रीन पर प्रदर्शित किया जा सकता है (अंतरिक्ष वर्ण सहित)।

  • कार्यक्रम isgraph इस्प्रिंट के समान वर्णों के लिए परीक्षण, लेकिन अंतरिक्ष वर्ण शामिल नहीं है।

void setup () {
   Serial.begin (9600);
   Serial.print ( " According to isspace:\rNewline ") ;
   Serial.print (isspace( '\n' )? " is a" : " is not a" );
   Serial.print ( " whitespace character\rHorizontal tab") ;
   Serial.print (isspace( '\t' )? " is a" : " is not a" );
   Serial.print ( " whitespace character\n") ;
   Serial.print (isspace('%')? " % is a" : " % is not a" );
   
   Serial.print ( " \rAccording to iscntrl:\rNewline") ;
   Serial.print ( iscntrl( '\n' )?"is a" : " is not a" ) ;
   Serial.print (" control character\r");
   Serial.print (iscntrl( '$' ) ? " $ is a" : " $ is not a" );
   Serial.print (" control character\r");
   Serial.print ("\rAccording to ispunct:\r");
   Serial.print (ispunct(';' ) ?"; is a" : "; is not a" ) ;
   Serial.print (" punctuation character\r");
   Serial.print (ispunct('Y' ) ?"Y is a" : "Y is not a" ) ;
   Serial.print ("punctuation character\r");
   Serial.print (ispunct('#' ) ?"# is a" : "# is not a" ) ;
   Serial.print ("punctuation character\r");

   Serial.print ( "\r According to isprint:\r");
   Serial.print (isprint('$' ) ?"$ is a" : "$ is not a" );
   Serial.print (" printing character\rAlert ");
   Serial.print (isprint('\a' ) ?" is a" : " is not a" );
   Serial.print (" printing character\rSpace ");
   Serial.print (isprint(' ' ) ?" is a" : " is not a" );
   Serial.print (" printing character\r");
   
   Serial.print ("\r According to isgraph:\r");
   Serial.print (isgraph ('Q' ) ?"Q is a" : "Q is not a" );
   Serial.print ("printing character other than a space\rSpace ");
   Serial.print (isgraph (' ') ?" is a" : " is not a" );
   Serial.print ("printing character other than a space ");
}

void loop () {

}

परिणाम

According to isspace:
Newline is a whitespace character
Horizontal tab is a whitespace character
% is not a whitespace character
According to iscntrl:
Newline is a control character
$ is not a control character
According to ispunct:
; is a punctuation character
Y is not a punctuation character
# is a punctuation character
According to isprint:
$ is a printing character
Alert is not a printing character
Space is a printing character
According to isgraph:
Q is a printing character other than a space
Space is not a printing character other than a space