इस सी प्रोग्रामिंग ट्यूटोरियल में, हम 2डी कैरेक्टर एरेज़ (2D character arrays) पर विस्तार से चर्चा करेंगे और चर्चा करेंगे कि 2डी कैरेक्टर एरेज़ या स्ट्रिंग एरेज़ (String arrays) को कैसे घोषित, इनिशियलाइज़ और उपयोग किया जाए।
सी में 2डी कैरेक्टर ऐरे क्या है?
हमने सी प्रोग्रामिंग द्वारा प्रदान की जाने वाली बुनियादी अवधारणाओं और विभिन्न पुस्तकालय कार्यों को सफलतापूर्वक सीखा है। एक और दिलचस्प अवधारणा 2D character arrays का उपयोग है। पिछले ट्यूटोरियल में, हमने पहले ही देखा था कि स्ट्रिंग कुछ और नहीं बल्कि वर्णों की एक सरणी है जो ‘\0’ के साथ समाप्त होती है।
2D character arrays, 2D integer arrays के समान हैं। हम तत्वों (elements) को स्टोर करते हैं और इसी तरह से अन्य ऑपरेशन करते हैं। एक 2D character array एक String array की तरह अधिक है। यह हमें एक ही नाम के तहत कई स्ट्रिंग्स को स्टोर करने की अनुमति देता है।
2डी कैरेक्टर ऐरे की घोषणा (Declaration) और इनिशियलाइज़ेशन कैसे करें?
एक 2D character array निम्न तरीके से घोषित की जाती है|
char name[5][10];
घोषणा के दौरान subscripts का क्रम महत्वपूर्ण है। पहला subscript [5] उन स्ट्रिंग्स की संख्या का प्रतिनिधित्व करता है जिन्हें हम अपने ऐरे में रखना चाहते हैं और दूसरा subscript [10] प्रत्येक स्ट्रिंग की लंबाई का प्रतिनिधित्व करता है। यह static memory allocation है। हम सरणी तत्वों को सरणी में संग्रहीत करने (storing array elements in array) के लिए 5*10=50 स्मृति स्थान दे रहे हैं।
वर्ण सरणी का प्रारंभ इस तरह से होता है|
char name[5][10]={
"tree",
"bowl",
"hat",
"mice",
"toon"
};
memory location में तत्वों (elements) को कैसे संग्रहीत किया जाता है, यह समझने के लिए नीचे दिए गए आरेख को देखें:-
हरे रंग में चिह्नित क्षेत्र memory locations दिखाते हैं जो array के लिए आरक्षित हैं लेकिन स्ट्रिंग द्वारा उपयोग नहीं किए जाते हैं। प्रत्येक वर्ण मेमोरी से 1 बाइट स्टोरेज लेता है।
उपयोगकर्ता से 2D array डेटा इनपुट कैसे लें?
उपयोगकर्ता से स्ट्रिंग डेटा इनपुट लेने के लिए हमें निम्नलिखित सिंटैक्स का पालन करने की आवश्यकता है:-
for(i=0 ;i<5 ;i++ )
scanf("%s",&name[i][0]);
यहाँ हम देखते हैं कि दूसरी सबस्क्रिप्ट [0] बनी हुई है। ऐसा इसलिए है क्योंकि यह स्ट्रिंग की लंबाई दिखाता है और किसी भी स्ट्रिंग में प्रवेश करने से पहले स्ट्रिंग की लंबाई 0 होती है।
Array elements को प्रिंट करना:-
जिस तरह से 2D कैरेक्टर ऐरे को प्रिंट किया जाता है वह 2D इंटीजर ऐरे के समान नहीं होता है। ऐसा इसलिए है क्योंकि हम देखते हैं कि array में सभी रिक्त स्थान उपयोगकर्ता द्वारा दर्ज की गई स्ट्रिंग द्वारा कब्जा नहीं किया जाता है।
यदि हम इसे 2D integer array के समान प्रदर्शित करते हैं तो हमें खाली स्थानों में अनावश्यक कचरा मान (unnecessary garbage values) मिलेगा। यहां बताया गया है कि हम सभी स्ट्रिंग तत्वों को कैसे प्रदर्शित कर सकते हैं|
for(i=0 ;i<5 ;i++)
printf("%s\n",name[i]);
यह प्रारूप केवल निर्दिष्ट सूचकांक संख्याओं में निहित स्ट्रिंग को प्रिंट करेगा और ‘\0’ के बाद किसी भी कचरा मान (garbage values) को समाप्त कर देगा। पिछले ट्यूटोरियल में हमारे सामने आए सभी स्ट्रिंग लाइब्रेरी फ़ंक्शंस का उपयोग स्ट्रिंग ऐरे में निहित स्ट्रिंग्स पर संचालन के लिए किया जा सकता है। प्रत्येक स्ट्रिंग को इस रूप में संदर्भित किया जा सकता है:-
name[i][0];
जहां [i] स्ट्रिंग की अनुक्रमणिका संख्या है जिसे लाइब्रेरी फ़ंक्शंस द्वारा एक्सेस करने की आवश्यकता है।
string array में एक स्ट्रिंग खोजने के लिए प्रोग्राम:-
आइए एक 2D char array या एक स्ट्रिंग सरणी (उपयोगकर्ता द्वारा दर्ज की गई) में उपयोगकर्ता द्वारा दर्ज की गई एक string(a char array) की खोज के लिए एक प्रोग्राम लागू करें:-
#include <stdio.h>
#include <string.h>
int main() {
char name[5][10],
item[10]; // declaring the string array and the character
// array that will contain the string to be matched
int i, x, f = 0;
/*taking 5 string inputs*/
printf("Enter 5 strings:\n");
for (i = 0; i < 5; i++)
scanf("%s", &name[i][0]);
/*entering the item to be found in the string array*/
printf("Enter the string to be searched:\n");
scanf("%s", &item);
/*process for finding the item in the string array*/
for (i = 0; i < 5; i++) {
x = strcmp(&name[i][0],
item); // compares the string in the array with the item and if
// match is found returns 0 and stores it in variable x
if (x == 0)
f = i;
}
/*if match is not found*/
if (f == 0)
printf("the item does not match any name in the list");
/*If the match is found*/
else
printf("Item Found. Item in the array exists at index - %d", f);
return 0;
}
Output :-
Enter 5 strings:
tree
bowl
hat
mice
toon
Enter the string to be searched:
mice
Item Found. Item in the array exists at index - 3
इस पोस्ट में इतना ही अगले टॉपिक पैर हम नेक्स्ट पोस्ट में बात करेंगे|
संपूर्ण ट्यूटोरियल श्रृंखला के लिए कृपया सी प्रोग्रामिंग ट्यूटोरियल ( C language ) या साइडबार में मेनू का पालन करें।
[…] सी में 2डी कैरेक्टर ऐरे क्या है(Handling multiple st… […]