Header Ads

ad728
  • New Updates

    Working With String

     


    Working With String

    जब किसी Variable में “C” Character Set का पूरा एक समूह Input किया जाता है , जिसका एक निश्चित अर्थ होता है , तो इसे String कहते हैं | जैसे “Sayema” “Rashid” “Shadab” आदि String है क्योंकि इनमें “C” Character Set के Characters का पूरा एक समूह है और इनका एक विशेष अर्थ भी है |

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

    scanf() Function किसी String को Accept करने में पूरी तरह से सक्षम नहीं होता है , क्योंकि 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 होगा | इस प्रोग्राम में दो Variable Declare करने होंगे , जिसमें एक Variable नाम Accept करेगा व दूसरा Variable उम्र Accept करेगा |

    इस Program में हमने पहला Variable Age int प्रकार का लिया है , क्योंकि उम्र का मान संख्यात्मक होता है | दूसरा Variable name लिया है | यह Character प्रकार का है क्योंकि नाम में Characters भी होती है | char प्रकार का एक Variable केवल एक ही 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 किया है |

     

    Program


    
    /* Inputting Name and Age & Getting Name and Age one Year Incremented in output */
    
    #include<stdio.h>
    main()
    {
    /* Declaration Section */
    int age;
    char name[30];
    /* 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();
    }
    
    Output
     Enter Name :Shadab
     Enter Age :25
    Your Name is ShadabYour Age Will Be 26 Next Year
    
    इस Program में यदि हम Array का प्रयोग ना करें , तो नाम के हर अक्षर को Store करने के लिए एक अलग Variable Declare करना पडेगा , क्योंकि char प्रकार का Data Type एक Variable में केवल एक ही अक्षर Store कर सकता है | ऐसे में प्रोग्राम काफी बड़ा और जटिल हो जाएगा क्योंकि हर अक्षर के लिए हमें एक Printf() Function द्वारा Message देना होगा और हर Input किए गए Character को पढ़ने के लिए एक scanf() Function लिखना पडेगा | इस समस्या से बचने के लिए  “C” में Array की व्यवस्था की गई |

    Array की विशेषता ये है कि इसके Bracket में जितनी  संख्या लिखी जाती है , हम उतने ही Data इसमें Store कर सकते हैं और जिस Data Type का Arrray 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 में एक से अधिक Character 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 Bye इसलिए हो जाती है , क्योंकि 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 करता है |

    अब यदि हम इसमें कोई नाम जैसे SHADAB ALAM Store करें तो वह निम्नानुसार Memory में Array की विभन्न Location पर Store होगा |

    इस तरह से हर अक्षर 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 हर Array का अन्त वहां समझता है जहां उसे “\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 होनी चाहिए |

    माना हम “SHADAB ALAM” नाम का String Input करके Enter Key Press करते हैं , तो प्रोग्राम का दूसरा Statement Execute नहीं होता , बल्कि सीधे ही एक गलत Result प्राप्त हो जाता है जिसमें SHADAB 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 में अजीब से Symbol Print कर देता है |

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728