String – The One-Dimensional Array of Characters

What is String: जब किसी वेरियेबल में C Character Set का पूरा एक समूह Input किया जाता है, जिसका एक निश्चित अर्थ होता है, तो इसे String कहते हैं। जैसे “Krishna”, “Mohan”, “Govind” आदि String हैं क्योंकि इनमें Character Set के Characters का पूरा एक समूह है और इनका एक विशेष अर्थ भी है।

हम ऐसे किसी Computer Program की कल्पना भी नहीं कर सकते हैं, जिसमें String का प्रयोग ना किया गया हो। User को किसी ना किसी तरह की Information देने के लिए ही हम विभिन्न प्रकार के Programs Develop करते हैं और Information हमेंशा Characters के एक समूह यानी String के रूप में ही Represent हो सकता है। इसलिए String Manipulation किसी भी Program का एक बहुत ही महत्वपूर्ण हिस्सा होता है।

scanf() Function किसी String को Accept करने में पूरी तरह से सक्षम नहीं होता है, क्योंकि scanf() function को जैसे ही Blank Space, Carriage Return, New Line Character, Tab, Form Feed Character प्राप्त होता है, scanf() Function Terminate हो जाता है। इसलिये अगर हमें प्रोग्राम में किसी String के साथ कोई प्रक्रिया करनी हो, तो हमें ऐसे Functions की जरूरत होती है, जो पूरे String को Accept कर सके और मेमोरी में Store कर सके।

C Language में Characters व Strings पर काम करने के लिये कुछ अलग Functions बनाए गए हैं, जो scanf() Function की कमियों को पूरा करते हैं। एक और ध्यान देने वाली बात ये है कि जब भी हमें किसी प्रोग्राम में String के साथ किसी प्रकार की प्रक्रिया करनी होती है, तब हमें उस String को Computer की Memory में Store करना पडता है।

हम जिस तरह से किसी एक Character या किसी एक Numerical मान को Computer की Memory में Store करके Manipulate व Process करते हैं, ठीक उसी तरह से हम किसी String को Computer की Memory में Store करके Manipulate नहीं कर सकते हैं, क्योंकि एक String कभी भी एक Single Data Item नहीं होता है, बल्कि Character प्रकार के बहुत सारे Data Items का पूरा एक समूह होता है। इसलिए एक String को Computer की Memory में Store करने के लिए हमें हमेंशा एक One-Dimensional Array बनाना पडता है।

एक उदाहरण द्वारा समझते हैं कि scanf() Function String पर काम करने के लिये क्यों उपयुक्त नहीं है। हम एक प्रोग्राम बनाते हैं जिसमें किसी व्यक्ति का पूरा नाम व उसकी उम्र Input किया जाएगा और Output में वापस उसका नाम और ये Message कि अगले साल उसकी उम्र एक साल अधिक हो जाएगी, Print होगा। इस प्रोग्राम में दो वेरियेबल Declare करने होंगे, जिसमें एक वेरियेबल नाम Accept करेगा व दूसरा वेरियेबल उम्र Accept करेगा।

इस प्रोग्राम में हमने पहला वेरियेबल Age int प्रकार का लिया है, क्योंकि उम्र का मान संख्‍यात्मक होता है। दूसरा वेरियेबल name लिया है। यह Character प्रकार का है क्योंकि नाम में Characters ही होते है। char प्रकार का एक वेरियेबल केवल एक ही Character Accept कर सकता है और String Input करने के लिये किसी अन्य प्रकार का Data Type “C” में नहीं है। इसलिये name को एक One Dimensional Array के रूप में Declare किया गया है।

Array का प्रयोग तब किया जाता है, जब एक ही Data Type के ढेर सारे Data किसी एक ही Variable में Store करने होते हैं। चूंकि इस Program में हम एक नाम Computer की Memory में Store करना चाहते हैं, और एक नाम में Characters का पूरा एक समूह होता है, इसलिए नाम को Store करने के लिए हमने इस Program में name नाम का एक Array Declare किया है।

/* Inputting Name and Age & Getting Name and Age one Year Incremented in output */

#include <stdio.h>
#include <conio.h>

main()
{
/* Declaration Section */
int age;
char name[30];
clrscr();

/* Input Section */
printf(“n Enter Name”);
scanf(“%s”, name);
printf(“n Enter Age”);
scanf(“%d”, &age);

/* Process Section */
age=age+1;

/* Output Section */
printf(“Your Name is %s”, name);
printf(“Your Age Will Be %d Next Year”, age);
getch();
}

इस Program में यदि हम Array का प्रयोग ना करें, तो नाम के हर अक्षर को Store करने के लिये एक अलग वेरियेबल Declare करना पडेगा, क्योंकि char प्रकार का Data Type एक वेरियेबल में केवल एक ही अक्षर Store कर सकता है। ऐसे में प्रोग्राम काफी बडा और जटिल हो जाएगा, क्योंकि हर अक्षर के लिये हमें एक printf() Function द्वारा Message देना होगा और हर Input किये गये Character को पढने के लिये एक scanf() Function लिखना पडेगा। इस समस्या से बचने के लिये ”सी” में एरे की व्यवस्था की गई।

एरे की विशेषता ये है कि इसके Bracket में जितनी संख्‍या लिखी जाती है, हम उतने ही Data इसमें Store कर सकते हैं और जिस Data Type का Array Declare किया जाता है, वह Array उसी तरह के मान मेमोरी में Store करता है। इस प्रोग्राम में हमने char प्रकार का Array Declare किया है और Bracket में Array की Size 30 दी है, इसलिये इस Array में हम केवल Characters Store कर सकते हैं और इस Array में कुल अक्षरों की संख्‍या 30 हो सकती है।

यहां हमने केवल एक ही Bracket मे Size दी है इसलिये इसे One-Dimensional Array कहते हैं। यदि एक और Bracket बना कर कोई Size उसमें लिख दें, तो यह Two Dimensional Array बन जाता है, और यही प्रक्रिया यदि आगे भी अपनाई जाए तो Declare होने वाला Array, Multi Dimensional हो जाता है। जैसे int value[10][12] एक Two Dimensional Array का उदाहरण है और int sum[2][3][4] एक Multi Dimensional Array का उदाहरण है।

हम जानते हैं कि जब हम किसी Identifier को Declare करते हैं, तो वह Identifier अपने Data Type के अनुसार मेमोरी में कुछ जगह Reserve करता है। ठीक इसी तरह से एक Array भी Memory में अपनी Size के अनुसार कुछ Space Reserve कर लेता है, लेकिन Array की विशेषता ये है कि हम स्वयं ये तय करते हैं, कि एक Array Memory में कितनी जगह Reserve करेगा, जबकि सामान्य Identifier के सम्बंध में Identifier Memory में कितनी जगह Reserve करेगा, ये Use किए जा रहे Identifier के Data Type पर निर्भर होता है। Array एक ऐसा Identifier होता है, जिसमें हम एक ही प्रकार के एक से अधिक Data Store कर सकते हैं।

इस प्रोग्राम के अनुसार यदि हम char name; लिखते हैं, तो यह Statement Memory में एक Byte की Space लेगा और इसमें हम सिर्फ एक Character Store कर सकेंगे। लेकिन एक नाम में हमेंशा एक से ज्यादा Characters होते हैं, इसलिए हमें इस name नाम के Identifier में एक से अधिक Characters Store करने हैं। इस स्थिति में एक name नाम के Character प्रकार के Array में हम कितने Characters Store करना चाहते हैं, ये Size भी हम Array के साथ Specify कर देते हैं और Statement को char name[size]; लिखते हैं, जहां size उस मान को Specify करता है, जितने Characters हम नाम के रूप में Memory में Store करना चाहते हैं।

हमनें इस Program में name Identifier की Size एक Bracket में char name[25] Statement द्वारा Specify कर दिया है। अब name नाम का Identifier Memory में 25 Byte की जगह एक क्रम में Reserve कर लेता है और name नाम के Identifier की Size 25 Byte हो जाती है। name की Size 25 Byte इसलिये हो जाती है, क्योंकि char प्रकार का एक Data Memory में एक Byte की Space Reserve करता है इसलिये char प्रकार के 25 Data Memory में 25 Byte की Space लेंगे। यदि Data Type char प्रकार से बदलकर int प्रकार का कर दें व Array को char name[25] से बदलकर int name[25] कर दें, तो यह Array Memory में 25 * 2 = 50 Byte की Space Reserve करेगा क्योंकि int प्रकार का एक Data Memory में दो Byte की जगह लेता है इसलिये int प्रकार के 25 Data Memory में 50 Byte की जगह घेरेंगे। name नाम का Array मेमोरी में निम्न चित्रानुसार Space Reserve करता हैः

name[25]

अब यदि हम इसमें कोई नाम जैसे KULDEEP MISHRA Store करें तो वह निम्नानुसार Memory में Array की विभिन्न Locations पर Store होगाः

name[25]

इस तरह से हर अक्षर Memory की अलग-अलग Locations पर जा कर Store होता है। हम यदि 25 से कम अक्षर भी Input करेंगे, तो भी name 25 Byte तो Reserve रखेगा ही। ध्यान दें की Blank Space भी एक Character है।

सिर्फ char प्रकार के Array में हमें केवल Characters या String Input करने का Statement देना होता है, जबकि यदि हम किसी और प्रकार का Array Declare करें तो Array की हर Locations पर जाकर मान Store करना पडता है और मान पुनः प्राप्त करने के लिये भी हर Location पर जाना पडता है।

char प्रकार के Array में हम जैसे ही एक Character Input करते हैं, प्रोग्राम Control स्वयं ही Array की अगली Location पर चला जाता है और Input होने वाले मान को Store करता जाता है साथ ही Array में जब String या Character Input करना होता है तब हमें & Address Operator का प्रयोग नहीं करना होता है क्योंकि Array के नाम से ही “C” Compiler समझ जाता है कि Input किए जाने वाले Character या String को किस Identifier के किस Location में Store करना है। यदि हम & Address Operator का प्रयोग करते हैं तो प्रोग्राम सही तरीके से काम नही करता है।

एक बात हमेंशा ध्यान रखें कि हमें जितने Characters Input करवाने हैं, Array की Size हमेंशा उससे एक अधिक रखनी चाहिये, क्योंकि “C” Compiler हर एरे का अन्त वहां समझता है जहां उसे ‘\0’  (NULL) Character प्राप्त होता है। जब हम String Input करवाते हैं, तब “C” Compiler स्वयं ही String के अंत में ये NULL Character लगा देता है।

यदि हम Array की Size कम लेते हैं और उसमें String Input करवाने के बाद यदि NULL के लिये कोई जगह नहीं बचती है, तो “C” Compiler स्वयं ही Input किये गए String के अन्तिम Character के स्थान पर NULL Character को Replace कर देता है। इसलिये यदि हमें 10 Character का String Input करना है, तो हमारे Array की Size 11 होनी चाहिये।

इस प्रोग्राम को जैसे ही Run किया जाता है, प्रोग्राम कंट्रोल को clrscr() Function प्राप्त होता है। ये Function Screen पर पहले से लिखे हुए Messages को साफ कर देता है। अब printf() Function Run होता है और हमसे नाम मांगता है। माना हम “KULDEEP MISHRA” नाम का String Input करके Enter Key Press करते हैं, तो प्रोग्राम का दूसरा Statement Execute नहीं होता, बल्कि सीधे ही एक गलत Result प्राप्त हो जाता है जिसमें KULDEEP String ही प्राप्त होती है। Space के बाद का नाम भी नहीं आता और Program User से Age भी नहीं मांगता है।

जैसाकि हमने पहले भी कहा कि ऐसा इसलिये होता है, क्योंकि scanf() Function Blank Space, Form Feed, Tab Key या New Line Character Constant मिलते ही Terminate हो जाता है, यानी इनके बाद Input किये जा रहे Characters Array में नहीं जाते हैं बल्कि Garbage Value के रूप में Memory में Store हो जाते हैं और यही Garbage Value अगले Identifier age को प्राप्त हो जाती है। चूंकि age int प्रकार का है, इसलिये इसको जब Character प्राप्त होता है, तो यह Output में अजीब से Symbols प्रिंट कर देता है।

scanf() Functon की इन कमियों को दूर करने के लिए C Library हें कई प्रकार के String व Character Manipulation करने से सम्‍बधित Library Functions जैसे getc(), getch(), getche(), getchar(), gets(), puts(), putc(), putch(), putchar() आदि Provide करता है, जिनके बारे में ठीक से जाने बिना कोई भी Programmer C Language में ऐसे Programs Create नहीं कर सकता, जिनमें String Manipulation का काम किया जाना हो। इसलिए इस प्रकार की समस्‍या से बचने के लिए आप C Programming Language in Hindi पुस्‍तक पढ सकते हैं, जिनमें न केवल इन Special Functions को Discuss किया गया है, बल्कि ये भी बताया गया है, कि इन Functions को कब और किस प्रकार की जरूरतों को पूरा करने के लिए कैसे उपयोग में लिया जाता है। (What is String)

What is Type Conversion and Type Casting
How to insert Formatted Input in C Language?

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS