C Language in Hindi – Strings

  • Introduction to strings in c language in hindi
  • Difference between char array and string literal
  • Traversing String
  • Using the length of string
  • Pointers with strings
strings in c language in hindi

Introduction to strings in c language

स्ट्रिंग को एक शून्य (‘\ 0’) द्वारा समाप्त किए गए वर्णों के one dimentional array के रूप में परिभाषित किया जा सकता है। वर्ण सरणी या स्ट्रिंग का उपयोग शब्द या वाक्यों जैसे text में हेरफेर करने के लिए किया जाता है। सरणी में प्रत्येक वर्ण memory के एक बाइट पर कब्जा कर लेता है, और अंतिम वर्ण हमेशा 0. होना चाहिए। समाप्ति वर्ण (‘\ 0’) एक स्ट्रिंग में महत्वपूर्ण है क्योंकि यह पहचानने का एकमात्र तरीका है कि स्ट्रिंग कहाँ समाप्त होती है। जब हम एक स्ट्रिंग को char s[10] के रूप में परिभाषित करते हैं, तो character s[10] को स्पष्ट रूप से memory में null के साथ आरंभ किया जाता है।

C भाषा में स्ट्रिंग घोषित करने के दो तरीके हैं।

  1. char array से
  2. string literal द्वारा

आइए देखें सी भाषा में char array द्वारा string घोषित करने का उदाहरण ।

char ch[3]={'H', 'T', 'P', '\0'};    

जैसा कि हम जानते हैं, array इंडेक्स 0 से शुरू होता है, इसलिए इसे नीचे दिए गए आंकड़े के रूप में दर्शाया जाएगा।

स्ट्रिंग की घोषणा करते समय, size अनिवार्य नहीं है। तो हम ऊपर दिए गए कोड को नीचे लिखे अनुसार लिख सकते हैं:

char ch[]={'h', 't', 'p', '\0'};  

हम सी भाषा में स्ट्रिंग literal द्वारा भी स्ट्रिंग को परिभाषित कर सकते हैं। उदाहरण के लिए:

char ch[]="htp";   

ऐसे मामले में, compiler द्वारा स्ट्रिंग के अंत में ‘\0’ जोड़ा जाएगा।

char array और स्ट्रिंग literal के बीच अंतर

char Array और literal के बीच दो मुख्य अंतर हैं।

  • हमें array के अंत में null character ‘\0’ को अपने आप जोड़ना होगा, जबकि इसे character array के मामले में compiler द्वारा आंतरिक रूप से जोड़ा जाता है।
  • String literal वर्णों के किसी अन्य सेट पर पुन: असाइन नहीं किया जा सकता है, जबकि, हम array के वर्णों को पुन: असाइन कर सकते हैं।

C में string का उदाहरण

आइए एक सरल उदाहरण देखें जहां एक स्ट्रिंग घोषित किया गया है और print किया जा रहा है। ‘%s’ का उपयोग c भाषा में स्ट्रिंग के लिए एक format specifier के रूप में किया जाता है।

#include<stdio.h>  
#include <string.h>    
int main(){    
  char ch[5]={'h', 't', 'p', '\0'};    
   char ch2[5]="htp";    
    
   printf("Char Array Value is: %s\n", ch);    
   printf("String Literal Value is: %s\n", ch2);    
 return 0;    
}

उत्पादन

Char Array Value is: htp
String Literal Value is: htp

Traversing string

किसी भी प्रोग्रामिंग भाषा में सबसे महत्वपूर्ण पहलुओं में से एक है string को traverse करना। हमें एक बहुत बड़े text में हेरफेर करने की आवश्यकता हो सकती है जो text को traverse करके किया जा सकता है। स्ट्रिंग की traversing एक integer array के ट्रैवर्सिंग से कुछ अलग है। हमें एक integer array को traverse करने के लिए array की लंबाई जानने की आवश्यकता होती है, जबकि हम स्ट्रिंग के मामले में null character का उपयोग कर सकते हैं ताकि string के अंत की पहचान की जा सके और लूप को समाप्त किया जा सके।

इसलिए, एक स्ट्रिंग को पार करने के दो तरीके हैं।

  • स्ट्रिंग की लंबाई का उपयोग करके
  • Null character का उपयोग करके।

आइए उनमें से प्रत्येक पर चर्चा करें।

स्ट्रिंग की लंबाई का उपयोग करना

आइए एक स्ट्रिंग में vowels की संख्या गिनने का एक उदाहरण देखें।

#include<stdio.h>  
void main ()  
{  
    char s[11] = "htp";  
    int i = 0;   
    int count = 0;  
    while(i<11)  
    {  
        if(s[i]=='a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'u' || s[i] == 'o')  
        {  
            count ++;  
        }  
        i++;  
    }  
    printf("The number of vowels %d",count);  
}  

उत्पादन

The number of vowels 0

Null character का उपयोग करना

आइए null character का उपयोग करके vowels की संख्या गिनने का एक ही उदाहरण देखें।

#include<stdio.h>  
void main ()  
{  
    char s[11] = "htp";  
    int i = 0;   
    int count = 0;  
    while(s[i] != NULL)  
    {  
        if(s[i]=='a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'u' || s[i] == 'o')  
        {  
            count ++;  
        }  
        i++;  
    }  
    printf("The number of vowels %d",count);  
}  

उत्पादन

The number of vowels 0

Input के रूप में स्ट्रिंग को accept करना

अब तक, हमने उपयोगकर्ता से इनपुट स्वीकार करने के लिए scanf का उपयोग किया है। हालांकि, इसका उपयोग स्ट्रिंग्स के मामले में भी किया जा सकता है लेकिन एक अलग परिदृश्य के साथ। नीचे दिए गए कोड पर विचार करें जो space का सामना करते ही स्ट्रिंग को save कर देता है।

#include<stdio.h>  
void main ()  
{  
    char s[20];  
    printf("Enter the string?");  
    scanf("%s",s);  
    printf("You entered %s",s);  
}  

उत्पादन

Enter the string?htp is the best                                                                 
You entered htp

आउटपुट से यह स्पष्ट है कि, उपरोक्त कोड space के द्वारा अलग किए गए strings के लिए काम नहीं करेगा। इस कोड को अलग किए गए स्ट्रिंग्स के लिए काम करने के लिए, scanf फ़ंक्शन (“% s”, s) लिखने के बजाय, scanf फ़ंक्शन में आवश्यक मामूली परिवर्तन किया गया, हमें लिखना होगा: scanf (“% [^\n]s” s) जो compiler को स्ट्रिंग s को store करने का निर्देश देता है जब नई लाइन (\ n) का सामना होता है। आइए space-seperated strings को संग्रहीत करने के लिए निम्नलिखित उदाहरण पर विचार करें।

#include<stdio.h>  
void main ()  
{  
    char s[20];  
    printf("Enter the string?");  
    scanf("%[^\n]s",s);  
    printf("You entered %s",s);  
}  

उत्पादन

Enter the string?htp is the best
You entered htp is the best

यहां हमें यह भी ध्यान रखना चाहिए कि स्ट्रिंग को स्टोर करने के लिए हमें scanf में (&) ऑपरेटर के address का उपयोग करने की आवश्यकता नहीं है क्योंकि स्ट्रिंग s characters का एक array है और array का नाम, अर्थात, s स्ट्रिंग का base address दर्शाता है इसलिए हमें इसके उपयोग और उपयोग की आवश्यकता नहीं है।

कुछ महत्वपूर्ण points

हालाँकि, निम्न points हैं जिन्हें scanf का उपयोग करके string में प्रवेश करते समय ध्यान दिया जाना चाहिए।

  • Compiler character array पर सीमा जाँच नहीं करता है। इसलिए, एक ऐसा case हो सकता है जहां स्ट्रिंग की लंबाई character array के आयाम को पार कर सकती है जो हमेशा कुछ महत्वपूर्ण डेटा को overwrite कर सकती है।
  • Scanf का उपयोग करने के बजाय, हम हो सकता है gets() का उपयोग करें जो हेडर फ़ाइल string.h में परिभाषित एक इनबिल्ट फ़ंक्शन है। gets() एक बार में केवल एक स्ट्रिंग प्राप्त करने में सक्षम है।

Strings के साथ pointers

हमने अब तक सरणी, फ़ंक्शंस और आदिम डेटा प्रकारों के साथ पॉइंटर्स का उपयोग किया है। हालांकि, स्ट्रिंग्स को इंगित करने के लिए पॉइंटर्स का उपयोग किया जा सकता है। पॉइंटर्स टू पॉइंट स्ट्रिंग्स का उपयोग करने के विभिन्न फायदे हैं। आइए हम सूचक के माध्यम से स्ट्रिंग तक पहुंचने के लिए निम्न उदाहरण पर विचार करें।

#include<stdio.h>  
void main ()  
{  
    char s[11] = "htp";  
    char *p = s; // pointer p is pointing to string s.   
    printf("%s",p); // the string htp is printed if we print p.  
}  

उत्पादन

htp

जैसा कि हम जानते हैं कि स्ट्रिंग वर्णों की एक सरणी है, पॉइंटर्स का उपयोग उसी तरह किया जा सकता है जिस तरह से उन्हें सरणियों के साथ उपयोग किया गया था। उपरोक्त उदाहरण में, p को वर्णों के सारणी के सूचक के रूप में घोषित किया गया है। P, s के समान प्रभावित करता है क्योंकि s स्ट्रिंग का आधार पता है और आंतरिक रूप से एक पॉइंटर के रूप में माना जाता है। हालाँकि, हम s की सामग्री को बदल नहीं सकते हैं या सीधे दूसरे स्ट्रिंग में s की सामग्री को कॉपी नहीं कर सकते हैं। इस उद्देश्य के लिए, हमें स्ट्रिंग्स को स्टोर करने के लिए पॉइंटर्स का उपयोग करने की आवश्यकता है।

एक स्ट्रिंग को परिभाषित करने के बाद, इसे अन्य वर्णों के लिए पुन: असाइन नहीं किया जा सकता है। हालाँकि, पॉइंटर्स का उपयोग करते हुए, हम स्ट्रिंग के लिए अक्षरों के सेट को असाइन कर सकते हैं। 

C String Functions

“String.h” लाइब्रेरी में परिभाषित कई महत्वपूर्ण स्ट्रिंग फ़ंक्शन हैं।

नहीं।समारोहविवरण
1)strlen(string_name)स्ट्रिंग की लंबाई देता है।
2)strcpy(destination, source)स्रोत स्ट्रिंग की सामग्री को गंतव्य स्ट्रिंग में कॉपी करता है।
3)strcat(first_string, second_string)समाप्ती या दूसरे string के साथ पहली string जुड़ती है। स्ट्रिंग का परिणाम पहले स्ट्रिंग में संग्रहीत होता है।
4)strcmp(first_string, second_string)दूसरे स्ट्रिंग के साथ पहली स्ट्रिंग की तुलना करता है। यदि दोनों स्ट्रिंग्स समान हैं, तो यह 0 देता है।
5)strrev(string)रिवर्स स्ट्रिंग देता है।
6)strlwr(string)लोअरकेस में स्ट्रिंग वर्ण देता है।
7)strupr(string)अपरकेस में स्ट्रिंग वर्ण देता है।

Leave a Reply

DMCA.com Protection Status