String In C Language
कैरेक्टर के one-dimensional Array(वन डाइमेंशनल एरे) को स्ट्रिंग करता है। स्ट्रिंग टो double inverted coma (" ") में लिखा जाता है निम्न उदाहरण एक स्टिंग का उदाहरण है।
"seven wonders of the world"
उपरोक्त स्ट्रिंग को जब मेमोरी में स्टोर करवाया जाएगा तो प्रत्येक character(कैरेक्टर) मेमोरी में एक बाइट का स्थान लेगा अतः यह कहा जा सकता है कि उपरोक्त स्ट्रिंग में 26 byte लेगी। यह कथन पूर्ण रूप से सत्य नहीं है। उपरोक्त स्ट्रिंग में कुल 27 बाइट मेमोरी की आवश्यकता होगी। इसका कारण यह है कि प्रत्येक स्टिंग के अंत में एक अतिरिक्त कैरेक्टर, जिसे null कैरेक्टर का जाता है, भी स्टोर होता है। इस कैरेक्टर को "\0" के माध्यम से दर्शाया जाता है। यदि अंत में null कैरेक्टर नहीं होगा तो यह पता लगाना संभव नहीं होगा कि यह string कहां समाप्त हो रही है।
स्ट्रिंग को declare(डिक्लेयर) करने का तरीका अरे जैसा ही है किंतु स्थिति में data type(डाटा टाइप) हमेशा char ही होता है:
char string_name[size of string];
उदाहरण:
स्ट्रिंग को = ऑपरेटर के माध्यम से declare(डिक्लेअर) तथा initialize(इनीशिएलाइज) एक साथ किया जा सकता है, किंतु किसी स्ट्रिंग वेरिएबल के बाद = ऑपरेटर की सहायता से वैल्यू स्टोर नहीं की जा सकती है। इसे initialize(इनीशिएलाइज) करने से अलग अलग तरीके हैं। स्प्रिंग को declare(डिक्लेअर) तथा initialize(इनीशिएलाइज) एक साथ भी किया जा सकता है। निम्न उदाहरण में कैरेक्टर एरे city को declare तथा initialize एक साथ ही किया जा सकता है:
या
उपरोक्त दोनों ही परिस्थितियों में मेमोरी में कुछ निम्न प्रकार स्टोर होगा:
इसी प्रकार strcpy() function(फंक्शन ) का प्रयोग करते हुए स्ट्रिंग को निम्न प्रकार initialize किया जा सकता है।
strcpy() एक function(फंक्शन) है जो उपरोक्त स्थिति में city वेरिएबल में sanchore स्टोर कर देगा। स्टिंग को निम्न प्रकार भी initialize किया जा सकता है:
ध्यान दें कि करैक्टर डाटा को डबल इनवर्टेड कोमा("") की जगह हमेशा सिंगल इनवर्टेड कोमा(' ') में लिखा जाता है।
Example:-
नीचे दिए गए उदाहरण में एक स्ट्रिंग भी खोल उप चलाते हुए प्रिंट करवाया गया है।
Output:-
Jalor
Explain Example:-
उपरोक्त प्रोग्राम में लोग जब पहली बार रन होगा तब वेरिएबल सी की वैल्यू 0 होगी। अतः लूप की कंडीशन city के index number (इंडेक्स संख्या) 0 जांच करेगी कि यह null हैं। यदि null नहीं मिलता है तो लुक प्रथम बार रन होगा। प्रत्येक रूप में वेरिएबल सी की वैल्यू में एक से वृद्धि हो रही है। अतः यह लो प्रत्येक index(इंडेक्स) के लिए जांच करेगा और जब null मिल जाएगा तो लूप चलना बंद हो जाएगा।
जो कार्य उपरोक्त प्रोग्राम में लूप की सहायता से किया जा रहा है वही कार्य control string "%s" के माध्यम से भी किया जा सकता है।
Example:-
नीचे दिए गए Example में printf() function(फंक्शन) में %s का प्रयोग करते हुए स्टिंग को प्रिंट करवाया गया है।
Output:-
Jalor
Explain Example:-
इस प्रोग्राम में %s का प्रयोग किया गया है, जो की स्वत: यह जांच कर लेता है की स्ट्रिंग में null कहां पर स्टोर हैं, तथा उसी के अनुसार वह स्ट्रिंग को प्रिंट कर देता है।
User द्वारा Input लेना
scanf() function की सहायता से user द्वारा input लेने में भी %s प्रयोग किया जाता हैं। यह ध्यान रखें कि scanf() में %s का प्रयोग करते समय एरे के नाम के पहले &(address of) Operator का प्रयोग नहीं किया जाता हैं। इसका कारण यह हैं कि एरे के नाम में एरे के प्रथम index (0) लस address store होता हैं।
Example:-
Output:-
Enter a string : Nirma
You Entered : Nirma
Explain Example:-
ऊपर दिए गए उदाहरण में scanf("%s",&nm); की जगह scanf("%s",&nm[0]); का प्रयोग भी किया जा सकता हैं। चूंकि यहाँ पर index संख्या 0 दी गई हैं,
अतः उसका एड्रेस प्राप्त करने के लिए & का प्रयोग किया गया हैं।
कंट्रोल करैक्टर %s के सामान्य प्रयोग से एक स्प्रिंग में एक से अधिक शब्द स्टोर नहीं किए जा सकते हैं। इसे समझने के लिए उपरोक्त प्रोग्राम को एक बार फिर से रन करें तथा इनपुट करते समय Mukesh Kumar दें तथा आउटपुट को ध्यान से देखें आउटपुट में केवल Mukesh ही प्रिंट होगा।
Output:-
Enter a string : Mukesh Kumar
You Entered : Mukesh
ऊपर उदाहरण में एरे mn में सिर्फ Mukesh ही स्टार्ट हुआ हैं। इसका कारण यह है कि scanf() में कंट्रोल करैक्टर %s वाइट स्पीस(टैब, स्पीस, इंटर आदि) मिलते ही स्ट्रिंग को समाप्त कर देता है।
एक से अधिक शब्दों को एरे में स्टोर करवाना:-
Example:-
👇 इस उदाहरण में एक से अधिक शब्दों को लूप की सहायता से इनपुट करवाया जा रहा हैं:Output:-
Type Text, press Enter to finish
Mukesh Kumar
You Entered :
Mukesh Kumar
Explain Example:-
ऊपर दिए गए उदाहरण में loop को तब तक चलाया गया है जब तक की (ch != "\n") कीबोर्ड से इंटर बटन नहीं दबा दिया जाता हैं। Enter button की वैल्यू \n मानी जाती हैं। प्रत्येक लूप में वेरिएबल ch में getchar() फंक्शन की सहायता से एक कैरेक्टर स्टोर होता जाएगा। जब यूजर कीबोर्ड से इंटर बटन दबाएगा तो प्रोग्राम का कंट्रोल लूप से बाहर आ जाएगा और एरे के अंतिम इंडेक्स पर null("\0") स्टोर हो जाएगा। अंत में इनपुट की गई स्ट्रिंग को प्रिंट करा दिया गया हैं।
एक या अधिक शब्दों को gets() function की सहायता से भी कैरेक्टर एरे में स्टोर किया जा सकता हैं तथा puts() funtion की सहायता से उसे प्रिन्ट किया जा सकता हैं:
Output:-
Enter a string: Dasrath Singh
Dasrath Singh
👆 ऊपर दिए गए उदाहरण में getch() funtion का प्रयोग किया गया हैं। यह funtion स्ट्रिंग इनपुट में लेने के लिए प्रयोग किया जाता हैं। इससे इनपुट में ली जाने वाली स्ट्रिंग में white space तथा अन्य स्पेस भी स्टोर हो सकते हैं। बाद में puts() function का प्रयोग करते हुए स्ट्रिंग को पुनः प्रिन्ट करवाया गया हैं।
स्टिंग को scanf() में प्रयोग करने के लिए %s के विशेष प्रारूप का प्रयोग किया जा सकता है। इसे प्रयोग करने का प्रारूप निम्न प्रकार है।
%[allowed_characters ]s
या
%[^Not_allowed_characters]s
Example:-
उपरोक्त उदाहरण में इनपुट तब तक दिया जाएगा जब तक की a, b, या c के अतिरिक्त कोई अन्य कैरेक्टर नहीं आ जाए। उदाहरण के लिए यदि इनपुट की जाने वाली वैल्यू Absolute है तो s से पहले तक के कैरेक्टर ही एरे में होंगे अर्थात एरे nm में सिर्फ a ही स्टोर हो पाएगा।
ऊपर दिए गए उदाहरण में a, b, तथा c के अतिरिक्त अन्य सभी कैरेक्टर इनपुट में लिए जा सकते हैं। उदाहरण के लिए यदि उदाहरण के लिए यदि programing इनपुट किया जाता है तो एरे में सिर्फ prog ही स्टोर हो पाएगा और a के आगे का हिस्सा amming मेमोरी में ही रह जाएगा।
Example:-
👇 नीचे दिए गए उदाहरण से स्पष्ट होता है कि %s का advance प्रयोग करते हुए स्पेस भी इनपुट में ली जा सकती है।
Output:-
Enter a string: Ranjit Singh
You Entered: Ranjit Singh
👆 ऊपर दिए गए example में scanf() में %[^\n]s का प्रयोग यह बताता है कि इंटर के अलावा अन्य सभी करैक्टर nm एरे में इनपुट में लिए जा सकते हैं।
0 Comments