सी में स्ट्रिंग क्या है?
सी में एक स्ट्रिंग एक रैखिक अनुक्रम में पात्रों के संग्रह के अलावा कुछ भी नहीं है। 'C' हमेशा एक स्ट्रिंग को एकल डेटा मानता है, भले ही उसमें व्हॉट्सएप हो। एकल उद्धरण प्रतिनिधित्व का उपयोग करके एक एकल वर्ण को परिभाषित किया गया है। एक स्ट्रिंग को दोहरे उद्धरण चिह्नों का उपयोग करके दर्शाया गया है।
Example, "Welcome to the world of programming!"
'सी' मानक पुस्तकालय प्रदान करता है
इस ट्यूटोरियल में, आप सीखेंगे-
- कैसे घोषित करें और सी में एक स्ट्रिंग की शुरुआत करें
- स्ट्रिंग इनपुट: एक स्ट्रिंग पढ़ें
- स्ट्रिंग आउटपुट: एक स्ट्रिंग प्रिंट / प्रदर्शित करें
- fputs () फ़ंक्शन
- कार्य करता है
- स्ट्रिंग लाइब्रेरी
- एक नंबर पर एक स्ट्रिंग परिवर्तित
कैसे घोषित करें और सी में एक स्ट्रिंग की शुरुआत करें
एसी स्ट्रिंग डेटा प्रकार के रूप में चार के साथ एक सरल सरणी है। 'C' भाषा डेटा प्रकार के रूप में सीधे स्ट्रिंग का समर्थन नहीं करती है। इसलिए, स्ट्रिंग को C में प्रदर्शित करने के लिए, आपको वर्ण सरणी का उपयोग करने की आवश्यकता है।
सी में स्ट्रिंग के रूप में एक चर घोषित करने के लिए सामान्य वाक्यविन्यास निम्नानुसार है,
char string_variable_name [array_size];
निम्नलिखित के रूप में तार की क्लासिक घोषणा की जा सकती है:
char string_name[string_length] = "string";
C स्ट्रिंग स्ट्रिंग घोषित करते समय एक सरणी के आकार को परिभाषित किया जाना चाहिए क्योंकि यह गणना करने के लिए उपयोग किया जाता है कि स्ट्रिंग चर में C में कितने वर्ण संग्रहीत किए जाने वाले हैं। स्ट्रिंग घोषणा के कुछ मान्य उदाहरण निम्नानुसार हैं,
char first_name[15]; //declaration of a string variablechar last_name[15];
उपरोक्त उदाहरण 15. के सरणी आकार के साथ स्ट्रिंग चर का प्रतिनिधित्व करता है। इसका मतलब है कि दिए गए C स्ट्रिंग सरणी में अधिकतम 15 वर्ण रखने में सक्षम है। सरणी का अनुक्रमण 0 से शुरू होता है इसलिए यह 0-14 स्थिति से वर्ण संग्रहीत करेगा। C कंपाइलर स्वचालित रूप से बनाए गए वर्ण सरणी में एक NULL वर्ण '\ 0' जोड़ता है।
चलो सी में स्ट्रिंग आरंभीकरण का अध्ययन करते हैं। निम्नलिखित उदाहरण सी में स्ट्रिंग्स के आरंभीकरण को दर्शाता है,
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 declarationchar 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*/
String3 में, NULL वर्ण स्पष्ट रूप से जोड़ा जाना चाहिए, और वर्ण एकल उद्धरण चिह्नों में संलग्न हैं।
'सी' हमें वर्ण सरणी के आकार को परिभाषित किए बिना एक स्ट्रिंग चर को शुरू करने की भी अनुमति देता है। यह निम्नलिखित तरीके से किया जा सकता है,
char first_name[ ] = "NATHAN";
स्ट्रिंग्स का सी में नाम एक सूचक के रूप में कार्य करता है क्योंकि यह मूल रूप से एक सरणी है।
स्ट्रिंग इनपुट: एक स्ट्रिंग पढ़ें
इंटरएक्टिव प्रोग्राम लिखते समय, जो उपयोगकर्ता से इनपुट के लिए पूछते हैं, सी स्कैनफ़ (), हो जाता है (), और फ़्यूज़ () फ़ंक्शन उपयोगकर्ता से दर्ज किए गए पाठ की एक पंक्ति को खोजने के लिए प्रदान करता है।
जब हम पढ़ने के लिए scanf () का उपयोग करते हैं, तो हम चर पते तक पहुंचने के लिए "&" का उपयोग किए बिना "% s" प्रारूप निर्दिष्ट का उपयोग करते हैं क्योंकि एक सरणी नाम एक सूचक के रूप में कार्य करता है। उदाहरण के लिए:
#includeint 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
स्कैनफ फंक्शन के साथ समस्या यह है कि यह कभी भी पूरी स्ट्रिंग्स को सी में नहीं पढ़ता है। यह व्हाट्सएप, फॉर्म फीड, वर्टिकल टैब, न्यूलाइन या कैरिज रिटर्न होते ही रीडिंग प्रोसेस को रोक देगा। मान लीजिए कि हम "गुरु99 ट्यूटोरियल" के रूप में इनपुट देते हैं, तो स्कैनफ फ़ंक्शन एक पूरे स्ट्रिंग को कभी नहीं पढ़ेगा क्योंकि दो नामों के बीच एक व्हाट्सएप चरित्र होता है। स्कैनफ फंक्शन केवल गुरु 99 पढ़ेगा।
किसी स्ट्रिंग को पढ़ने के लिए रिक्त स्थान होते हैं, हम प्राप्त () फ़ंक्शन का उपयोग करते हैं। व्हाट्सएप को अनदेखा करता है। जब कोई नईलाइन पहुँचती है तो यह पढ़ना बंद कर देता है (Enter कुंजी दबाया जाता है)। उदाहरण के लिए:
#includeint 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 RitchieMy full name is Dennis Ritchie
प्राप्त करने के लिए एक और सुरक्षित विकल्प () फेज़ () फ़ंक्शन है जो वर्णों की एक निर्दिष्ट संख्या को पढ़ता है। उदाहरण के लिए:
#includeint 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: CarlosMy name is Carlos
तर्क () तर्क हैं:
- स्ट्रिंग नाम,
- पढ़ने के लिए वर्णों की संख्या,
- स्टडिन का अर्थ है मानक इनपुट से पढ़ना जो कीबोर्ड है।
स्ट्रिंग आउटपुट: एक स्ट्रिंग प्रिंट / प्रदर्शित करें
मानक प्रिंटफ फ़ंक्शन का उपयोग आउटपुट डिवाइस पर स्ट्रिंग्स को C में प्रिंट करने या प्रदर्शित करने के लिए किया जाता है। उपयोग किया गया प्रारूप विनिर्देशक% s है
उदाहरण,
printf("%s", name);
स्ट्रिंग का उत्पादन फ़ुटप्स () और प्रिंटफ़ () फ़ंक्शन के साथ किया जाता है।
fputs () फ़ंक्शन
जहाँ आप पाठ प्रदर्शित करना चाहते हैं, वहाँ फ़ुटप्स () को स्ट्रिंग और एक सूचक के नाम की आवश्यकता होती है। हम स्टडआउट का उपयोग करते हैं जो स्क्रीन पर प्रिंट करने के लिए मानक आउटपुट को संदर्भित करता है। उदाहरण के लिए:
#includeint main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}
आउटपुट:
Enter your town: New YorkNew York
कार्य करता है
पुट फ़ंक्शन को आउटपुट डिवाइस पर C में स्ट्रिंग को प्रिंट करने और कर्सर को पहली स्थिति में ले जाने के लिए उपयोग किया जाता है। एक पुट फ़ंक्शन का उपयोग निम्न तरीके से किया जा सकता है,
#includeint main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}
इस फ़ंक्शन का सिंटैक्स अन्य कार्यों की तुलना में अपेक्षाकृत सरल है।
स्ट्रिंग लाइब्रेरी
मानक 'सी' लाइब्रेरी एक प्रोग्राम के भीतर स्ट्रिंग्स को हेरफेर करने के लिए विभिन्न फ़ंक्शन प्रदान करता है। इन कार्यों को स्ट्रिंग हैंडलर भी कहा जाता है। ये सभी हैंडलर
समारोह | उद्देश्य |
स्ट्रलेन () | इस फ़ंक्शन का उपयोग स्ट्रिंग की लंबाई खोजने के लिए किया जाता है। यह रिटर्न देता है कि NULL वर्ण को छोड़कर कितने वर्ण स्ट्रिंग में मौजूद हैं। |
strcat (str1, str2) | इस फ़ंक्शन का उपयोग एक स्ट्रिंग बनाने के लिए दो तारों के संयोजन के लिए किया जाता है। यह str2 के अंत में str2 को जोड़ता या जोड़ता है और str1 के लिए एक पॉइंटर लौटाता है। |
strcmp (str1, str2) | इस फ़ंक्शन का उपयोग एक दूसरे के साथ दो तारों की तुलना करने के लिए किया जाता है। यह 0 देता है अगर str1 str2 के बराबर है, 0 से कम है तो str1 |
नीचे दिए गए प्रोग्राम पर विचार करें जो स्ट्रिंग लाइब्रेरी फ़ंक्शंस प्रदर्शित करता है:
#include#include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}
आउटपुट:
Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!
अन्य महत्वपूर्ण पुस्तकालय कार्य हैं:
- strncmp (str1, str2, n): यह 0 देता है यदि str1 का पहला n अक्षर str2 के पहले n अक्षर के बराबर है, 0 से कम है तो str1
str2 है। - strncpy (str1, str2, n) इस फ़ंक्शन का उपयोग किसी स्ट्रिंग को दूसरे स्ट्रिंग से कॉपी करने के लिए किया जाता है। Str2 से str1 के पहले n वर्णों की प्रतिलिपि बनाता है
- strchr (str1, c): यह str1 में char c की पहली घटना के लिए एक पॉइंटर देता है, या NULL यदि वर्ण नहीं मिला।
- strrchr (str1, c): यह str1 को रिवर्स में खोजता है और एक सूचक को str1 में char c की स्थिति में लौटाता है, या NULL यदि वर्ण नहीं मिला।
- strstr (str1, str2): यह str1 में str2 की पहली घटना के लिए एक पॉइंटर लौटाता है, या NULL यदि str2 नहीं मिला है।
- strncat (str1, str2, n) str1 के अंत में str2 के पहले n (अक्षर) को जोड़ता है और एक सूचक को str1 पर लौटाता है।
- strlwr (): स्ट्रिंग को लोअर केस में बदलने के लिए
- strupr (): स्ट्रिंग को अपर केस में बदलने के लिए
- strrev (): स्ट्रिंग को रिवर्स करने के लिए
एक नंबर पर एक स्ट्रिंग परिवर्तित
C प्रोग्रामिंग में, हम रन-टाइम त्रुटि को रोकने के लिए संख्यात्मक वर्णों की एक स्ट्रिंग को एक संख्यात्मक मान में बदल सकते हैं। Stdio.h लाइब्रेरी में स्ट्रिंग को संख्या में बदलने के लिए निम्नलिखित कार्य हैं:
- int atoi (str) ASCII से पूर्णांक तक स्टेंड; यह समतुल्य अंतर मान को परिवर्तित करता है। यदि पहला वर्ण संख्या नहीं है या कोई संख्या नहीं मिली है, तो 0 लौटा दिया गया है।
- डबल Atof (str) ASCII के लिए स्टेंड फ्लोट करने के लिए, यह स्ट्रेट को बराबर डबल वैल्यू में परिवर्तित करता है। यदि पहला वर्ण संख्या नहीं है या कोई संख्या नहीं मिली है तो 0.0 लौटा दी गई है।
- ASCII के लिए लंबे समय तक इंटोल (str) स्टेंड्स, लंबे समय तक इंट, बराबर लंबे पूर्णांक मान के लिए कनवर्ट करता है। यदि पहला वर्ण संख्या नहीं है या कोई संख्या नहीं मिली है, तो 0 लौटा दिया गया है।
निम्नलिखित कार्यक्रम atoi () फ़ंक्शन को प्रदर्शित करता है:
#includeint 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: 221348you enter 221348
- एक स्ट्रिंग पॉइंटर घोषणा जैसे कि चार * स्ट्रिंग = "भाषा" एक स्थिर है और इसे संशोधित नहीं किया जा सकता है।
सारांश
- एक स्ट्रिंग एक वर्ण सरणी में संग्रहीत वर्णों का एक क्रम है।
- एक स्ट्रिंग दोहरे उद्धरण चिह्नों में संलग्न एक पाठ है।
- एक चरित्र जैसे 'डी' एक स्ट्रिंग नहीं है और यह एकल उद्धरण चिह्नों द्वारा इंगित किया गया है।
- 'C' किसी प्रोग्राम में स्ट्रिंग्स को मैनिपुलेट करने के लिए मानक लाइब्रेरी फ़ंक्शंस प्रदान करता है। स्ट्रिंग जोड़तोड़
हैडर फ़ाइल में संग्रहीत हैं। - प्रोग्राम में उपयोग करने से पहले एक स्ट्रिंग को घोषित या प्रारंभ किया जाना चाहिए।
- विभिन्न इनपुट और आउटपुट स्ट्रिंग फ़ंक्शन हैं, उनमें से प्रत्येक में इसकी विशेषताएं हैं।
- अपने कार्यों के साथ काम करने के लिए स्ट्रिंग लाइब्रेरी को शामिल करना न भूलें
- हम स्ट्रिंग को एटोई (), एटॉफ़ () और एटोल () के माध्यम से संख्या में बदल सकते हैं जो कोडिंग और डिकोडिंग प्रक्रियाओं के लिए बहुत उपयोगी हैं।
- हम सी में स्ट्रिंग्स की एक सरणी को परिभाषित करके विभिन्न तारों में हेरफेर कर सकते हैं।