सी में स्ट्रिंग्स: सी में स्ट्रिंग वेरिएबल्स को कैसे घोषित और आरंभ करें

सी भाषा में स्ट्रिंग क्या है?

A सी . में स्ट्रिंग यह एक रैखिक अनुक्रम में वर्णों का एक संग्रह है। 'सी' हमेशा एक स्ट्रिंग को एकल डेटा मानता है, भले ही उसमें रिक्त स्थान हों। एकल वर्ण को एकल उद्धरण प्रतिनिधित्व का उपयोग करके परिभाषित किया जाता है। स्ट्रिंग को दोहरे उद्धरण चिह्नों का उपयोग करके दर्शाया जाता है।

Example, "Welcome to the world of programming!"

'सी' मानक पुस्तकालय प्रदान करता है इसमें कई फ़ंक्शन शामिल हैं जिनका उपयोग C में स्ट्रिंग्स पर जटिल ऑपरेशन आसानी से करने के लिए किया जा सकता है।

सी में स्ट्रिंग कैसे घोषित करें?

AC स्ट्रिंग एक सरल सारणी है जिसमें डेटा प्रकार char है। 'सी' भाषा स्ट्रिंग को डेटा टाइप के रूप में सीधे सपोर्ट नहीं करता है। इसलिए, C में स्ट्रिंग को प्रदर्शित करने के लिए, आपको कैरेक्टर ऐरे का उपयोग करना होगा।

C में किसी चर को स्ट्रिंग के रूप में घोषित करने का सामान्य सिंटैक्स इस प्रकार है,

char string_variable_name [array_size];

स्ट्रिंग्स की क्लासिक घोषणा निम्न प्रकार से की जा सकती है:

 char string_name[string_length] = "string";

C स्ट्रिंग वैरिएबल घोषित करते समय ऐरे का आकार परिभाषित किया जाना चाहिए क्योंकि इसका उपयोग यह गणना करने के लिए किया जाता है कि C में स्ट्रिंग वैरिएबल के अंदर कितने अक्षर संग्रहीत किए जाने वाले हैं। स्ट्रिंग घोषणा के कुछ मान्य उदाहरण इस प्रकार हैं,

char first_name[15];    //declaration of a string variable
char last_name[15];

उपरोक्त उदाहरण 15 के सरणी आकार वाले स्ट्रिंग चर को दर्शाता है। इसका मतलब है कि दिया गया C स्ट्रिंग सरणी अधिकतम 15 वर्ण रखने में सक्षम है। सरणी का अनुक्रमण 0 से शुरू होता है इसलिए यह 0-14 स्थिति से वर्णों को संग्रहीत करेगा। सी कम्पाइलर स्वचालित रूप से निर्मित वर्ण सरणी में एक NULL वर्ण '\0' जोड़ देता है।

सी भाषा में स्ट्रिंग को कैसे प्रारंभ करें?

आइए C में स्ट्रिंग इनिशियलाइज़ेशन का अध्ययन करें। निम्न उदाहरण C में स्ट्रिंग्स के इनिशियलाइज़ेशन को प्रदर्शित करता है,

char first_name[15] = "ANTHONY";
char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declaration
char string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */
char string2 [ ] = "world";  /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */
char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/

स्ट्रिंग3 में, NULL वर्ण को स्पष्ट रूप से जोड़ा जाना चाहिए, और वर्णों को एकल उद्धरण चिह्नों में संलग्न किया जाना चाहिए।

'सी' हमें आरंभीकरण की भी अनुमति देता है स्ट्रिंग वेरिएबल कैरेक्टर ऐरे का आकार निर्धारित किए बिना। यह निम्न तरीके से किया जा सकता है,

char first_name[ ] = "NATHAN";

सी भाषा में स्ट्रिंग्स का नाम एक पॉइंटर के रूप में कार्य करता है क्योंकि यह मूलतः एक ऐरे है।

सी स्ट्रिंग इनपुट: स्ट्रिंग पढ़ने के लिए सी प्रोग्राम

जब इंटरैक्टिव प्रोग्राम लिखे जाते हैं जो उपयोगकर्ता से इनपुट मांगते हैं, तो C उपयोगकर्ता द्वारा दर्ज किए गए पाठ की पंक्ति को खोजने के लिए scanf(), gets(), और fgets() फ़ंक्शन प्रदान करता है।

जब हम पढ़ने के लिए scanf() का उपयोग करते हैं, तो हम चर पते तक पहुंचने के लिए “&” का उपयोग किए बिना “%s” प्रारूप विनिर्देशक का उपयोग करते हैं क्योंकि एक सरणी नाम एक सूचक के रूप में कार्य करता है।
उदाहरण के लिए:

#include <stdio.h>
int main() {
char name[10];
int age;
printf("Enter your first name and age: \n");
scanf("%s %d", name, &age); 
printf("You entered: %s %d",name,age);
}

आउटपुट:

Enter your first name and age:
John_Smith 48

स्कैनफ़ फ़ंक्शन के साथ समस्या यह है कि यह C में कभी भी संपूर्ण स्ट्रिंग नहीं पढ़ता है। यह रिक्त स्थान, फ़ॉर्म फ़ीड, वर्टिकल टैब, न्यूलाइन या कैरिज रिटर्न होते ही पढ़ने की प्रक्रिया को रोक देगा। मान लीजिए कि हम "गुरु99 ट्यूटोरियल्स" के रूप में इनपुट देते हैं, तो स्कैनफ़ फ़ंक्शन कभी भी संपूर्ण स्ट्रिंग नहीं पढ़ेगा क्योंकि दो नामों के बीच एक रिक्त स्थान वर्ण होता है। स्कैनफ़ फ़ंक्शन केवल पढ़ेगा Guru99.

रिक्त स्थान वाली स्ट्रिंग को पढ़ने के लिए, हम gets() फ़ंक्शन का उपयोग करते हैं। Gets रिक्त स्थानों को अनदेखा करता है। यह रुक जाता है

जब नई लाइन पर पहुँचते हैं (एंटर कुंजी दबाया जाता है) तो पढ़ना।

उदाहरण के लिए:

#include <stdio.h>
int main() {
char full_name[25];
printf("Enter your full name: ");
gets(full_name);
printf("My full name is %s ",full_name);
return 0;
}

आउटपुट:

Enter your full name: Dennis Ritchie
My full name is Dennis Ritchie

gets() का एक और सुरक्षित विकल्प fgets() फ़ंक्शन है जो निर्दिष्ट संख्या में वर्णों को पढ़ता है।
उदाहरण के लिए:

#include <stdio.h>
int main() {
char name[10];
printf("Enter your  name plz: ");
fgets(name, 10, stdin);
printf("My name is %s ",name);
return 0;}

आउटपुट:

Enter your name plz: Carlos
My name is Carlos

Fgets() तर्क हैं:

  • स्ट्रिंग नाम,
  • पढने के लिए वर्णों की संख्या,
  • stdin का अर्थ है मानक इनपुट से पढ़ना जो कि कीबोर्ड है।

सी स्ट्रिंग आउटपुट: स्ट्रिंग प्रिंट करने के लिए सी प्रोग्राम

मानक printf फ़ंक्शन का उपयोग आउटपुट डिवाइस पर C में स्ट्रिंग्स को प्रिंट करने या प्रदर्शित करने के लिए किया जाता है। उपयोग किया जाने वाला फ़ॉर्मेट विनिर्देशक %s है

उदाहरण,

printf("%s", name);

स्ट्रिंग आउटपुट fputs() और printf() फ़ंक्शन के साथ किया जाता है।

fputs() फ़ंक्शन

fputs() को स्ट्रिंग का नाम और पॉइंटर की आवश्यकता होती है जहाँ आप टेक्स्ट प्रदर्शित करना चाहते हैं। हम stdout का उपयोग करते हैं जो स्क्रीन पर प्रिंट करने के लिए मानक आउटपुट को संदर्भित करता है।
उदाहरण के लिए:

#include <stdio.h>
int main()
{char town[40];
  printf("Enter your town: ");
  gets(town);
  fputs(town, stdout);
  return 0;}

आउटपुट:

Enter your town: New York
New York

फ़ंक्शन डालता है

पुट्स फ़ंक्शन का उपयोग आउटपुट डिवाइस पर C में स्ट्रिंग प्रिंट करने और कर्सर को वापस पहले स्थान पर ले जाने के लिए किया जाता है। पुट्स फ़ंक्शन का उपयोग निम्न तरीके से किया जा सकता है,

#include <stdio.h>
int main() {
char name[15];
gets(name);        //reads a string
puts(name);        //displays a string
return 0;}

इस फ़ंक्शन का सिंटैक्स अन्य फ़ंक्शनों की तुलना में अपेक्षाकृत सरल है।

स्ट्रिंग लाइब्रेरी

मानक 'सी' लाइब्रेरी प्रोग्राम के भीतर स्ट्रिंग्स में हेरफेर करने के लिए विभिन्न फ़ंक्शन प्रदान करती है। इन फ़ंक्शन को स्ट्रिंग हैंडलर भी कहा जाता है। ये सभी हैंडलर अंदर मौजूद होते हैं हेडर फाइल।

समारोह उद्देश्य
strlen () इस फ़ंक्शन का उपयोग स्ट्रिंग की लंबाई ज्ञात करने के लिए किया जाता है। यह NULL वर्ण को छोड़कर स्ट्रिंग में मौजूद कितने वर्णों की संख्या बताता है।
strcat(स्ट्र1,स्ट्र2) इस फ़ंक्शन का उपयोग दो स्ट्रिंग को एक साथ जोड़कर एक स्ट्रिंग बनाने के लिए किया जाता है। यह str2 को str1 के अंत में जोड़ता है या जोड़ता है और str1 के लिए एक पॉइंटर लौटाता है।
strcmp(str1, str2) इस फ़ंक्शन का उपयोग दो स्ट्रिंग्स की एक दूसरे से तुलना करने के लिए किया जाता है। यदि str0 str1 के बराबर है तो यह 2 लौटाता है, यदि str0 < str1 है तो 2 से कम लौटाता है, और यदि str0 > str1 है तो 2 से अधिक लौटाता है।

आइए नीचे दिए गए प्रोग्राम पर विचार करें जो स्ट्रिंग लाइब्रेरी फ़ंक्शन को प्रदर्शित करता है:

#include <stdio.h>
#include <string.h>
int main () {
//string initialization
char string1[15]="Hello";
char string2[15]=" World!";
char string3[15];
int val;

//string comparison
val= strcmp(string1,string2);
if(val==0){
    printf("Strings are equal\n");
}
else{
    printf("Strings are not equal\n");
}

//string concatenation
printf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!

//string length
printf("\nLength of first string:%d",strlen(string1));
printf("\nLength of second string:%d",strlen(string2));

//string copy
printf("\nCopied string is:%s\n",strcpy(string3,string1));  //string1 is copied into string3
return 0;
}

आउटपुट:

Strings are not equal
Concatenated string:Hello World!
Length of first string:12
Length of second string:7
Copied string is:Hello World!

पुस्तकालय के अन्य महत्वपूर्ण कार्य हैं:

  • strncmp(str1, str2, n) : यदि str0 के प्रथम n अक्षर str1 के प्रथम n अक्षर के बराबर हों तो यह 2 लौटाता है, यदि str0 < str1 हो तो 2 से कम लौटाता है, तथा यदि str0 > str1 हो तो 2 से अधिक लौटाता है।
  • strncpy(str1, str2, n) इस फ़ंक्शन का उपयोग किसी स्ट्रिंग को दूसरी स्ट्रिंग से कॉपी करने के लिए किया जाता है। str2 के पहले n अक्षरों को str1 में कॉपी करता है
  • strchr(str1, c): यह str1 में char c की पहली उपस्थिति के लिए एक संकेतक लौटाता है, या यदि वर्ण नहीं मिलता है तो NULL लौटाता है।
  • strrchr(str1, c): यह str1 को विपरीत दिशा में खोजता है तथा str1 में char c की स्थिति के लिए एक पॉइंटर लौटाता है, या यदि वर्ण नहीं मिलता है तो NULL लौटाता है।
  • strstr(str1, str2): यह str2 में str1 की पहली उपस्थिति के लिए एक पॉइंटर लौटाता है, या यदि str2 नहीं मिलता है तो NULL लौटाता है।
  • strncat(str1, str2, n) str2 के प्रथम n अक्षरों को str1 के अंत में जोड़ता है (संगठित करता है) तथा str1 के लिए एक पॉइंटर लौटाता है।
  • strlwr() :स्ट्रिंग को लोअर केस में बदलने के लिए
  • strupr() :स्ट्रिंग को अपर केस में बदलने के लिए
  • strrev() : स्ट्रिंग को उलटने के लिए

स्ट्रिंग को संख्या में परिवर्तित करना

सी प्रोग्रामिंग में, हम संख्यात्मक वर्णों की स्ट्रिंग को संख्यात्मक मान में परिवर्तित कर सकते हैं ताकि रन-टाइम त्रुटि को रोका जा सके। stdio.h लाइब्रेरी में स्ट्रिंग को संख्या में बदलने के लिए निम्नलिखित फ़ंक्शन शामिल हैं:

  • int atoi(str) ASCII से पूर्णांक के लिए प्रयुक्त होता है; यह str को समतुल्य int मान में परिवर्तित करता है। यदि प्रथम वर्ण कोई संख्या नहीं है या कोई संख्या नहीं मिलती है तो 0 लौटाया जाता है।
  • double atof(str) ASCII फ्लोट के लिए प्रयुक्त होता है, यह str को समतुल्य double मान में परिवर्तित करता है। यदि पहला वर्ण कोई संख्या नहीं है या कोई संख्या नहीं मिलती है तो 0.0 लौटाया जाता है।
  • long int atol(str) का अर्थ ASCII से long int है, यह str को समतुल्य long पूर्णांक मान में परिवर्तित करता है। यदि पहला वर्ण कोई संख्या नहीं है या कोई संख्या नहीं मिलती है तो 0 लौटाया जाता है।

निम्नलिखित प्रोग्राम atoi() फ़ंक्शन को प्रदर्शित करता है:

#include <stdio.h>
int main()
{char *string_id[10];
  int ID;
  printf("Enter a number: ");
  gets(string_id);
  ID = atoi(string_id);
   printf("you enter %d  ",ID);
  return 0;}

आउटपुट:

Enter a number: 221348
you enter 221348
  • एक स्ट्रिंग पॉइंटर घोषणा जैसे कि char *string = “language” एक स्थिरांक है और इसे संशोधित नहीं किया जा सकता है।

सारांश

  • स्ट्रिंग, वर्ण सरणी में संग्रहीत वर्णों का अनुक्रम है।
  • स्ट्रिंग दोहरे उद्धरण चिह्नों में संलग्न पाठ है।
  • 'd' जैसा कोई वर्ण स्ट्रिंग नहीं है और इसे एकल उद्धरण चिह्नों द्वारा दर्शाया जाता है।
  • 'C' प्रोग्राम में स्ट्रिंग्स में हेरफेर करने के लिए मानक लाइब्रेरी फ़ंक्शन प्रदान करता है। स्ट्रिंग मैनिपुलेटर्स को कहाँ संग्रहीत किया जाता है हेडर फाइल।
  • किसी स्ट्रिंग को प्रोग्राम में उपयोग करने से पहले घोषित या आरंभीकृत किया जाना चाहिए।
  • विभिन्न इनपुट और आउटपुट स्ट्रिंग फ़ंक्शन हैं, उनमें से प्रत्येक की अपनी विशेषताएं हैं।
  • इसके फंक्शन के साथ काम करने के लिए स्ट्रिंग लाइब्रेरी को शामिल करना न भूलें
  • हम atoi(), atof() और atol() के माध्यम से स्ट्रिंग को संख्या में बदल सकते हैं जो कोडिंग और डिकोडिंग प्रक्रियाओं के लिए बहुत उपयोगी हैं।
  • हम C में स्ट्रिंग्स की एक सरणी परिभाषित करके विभिन्न स्ट्रिंग्स में हेरफेर कर सकते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: