इस tutorial में हम समझेंगे की C programming में String क्या होती हैं और सीखेंगे की कैसे आप अपने C programs में string declaration, string initialization और string input output कर सकते हो.
C programs बनाते वक्त हम बहुत तरह के data के साथ काम करते हैं जैसे integers (25, 654, 7), characters (‘a’, ‘T’, ‘z’) और floating numbers (34.64, 432.25, 6.765).
Characters values के लिए हम char data type का use करते हैं लेकिन char data type का variable सिर्फ एक character value ही store कर सकता है.
जैसा की आप नीचे example में देख पा रहे हैं की variable ch1 और ch2 को जब हमने single char value assign की तो हमारा statement सही है लेकिन जब variable ch3 और ch4 को जब हमने एक से ज्यादा char values assign की तो हमारा statement गलत है.
char ch1, ch2, ch3, ch4;
ch1 = 'A'; //right
ch2 = 'e'; //right
ch3 = 'xy'; //wrong
ch4 = 'karan'; //wrong
एक से ज्यादा characters values को हम Strings कहते हैं जैसे की “abc”, “karan”, “delhi”, “Hindi me Tutorials”. दूसरे शब्दों में कहूँ तो group of characters को हम strings कहते हैं.
ज्यादातर सभी highlevel programming languages में int, char और float datatype की तरह string datatype या class होती है जिसकी help से उस language में string values को use करते हैं.
लेकिन C programming में string values के साथ काम करने के लिए int और char की तरह कोई predefined string datatype नहीं है.
इसलिए C language में हम string values के साथ काम करने के लिए char data type के array की help लेते हैं.
क्योंकि जैसा की मैंने आपको ऊपर बताया की group of characters को हम string कहते हैं और char array भी तो group of characters होता है.
लेकिन अगर बहुत detailed में देखें तो string और normal char array में थोड़ा सा अंतर होता है और वो ये है की string वाले char array के last index पर null charachter ‘\0’ जरूर होता है.
String Declaration in C Programming
जैसा की मैंने आपको ऊपर बताया की C language directly string data type को support नहीं नहीं करती इसलिए हम character array को string की तरह use करते हैं.
इसलिए C language में string declaration का मतलब है char data type का one dimensional array declare करना.
String declaration syntax:
char str_name[size];
आप C identifiers rules को follow करते हुए अपनी मर्जी से string को कोई भी name दे सकते हो. इसके अलावा string की length को ध्यान में रखते हुए array size भी कुछ भी दे सकते हो.
String size set करते वक्त string terminating null character (‘\0’) का ध्यान रखते हुए array size 1 नंबर ज्यादा रखिएगा.
String declaration examples:
char str[20]; char name[15]; char address[50]; char email[30];
String Initialization in C Programming
String को आप 2 तरह से value दे सकते हो पहला तरीका की आप खुद से string को initialize कर दें और दूसरा तरीका आप user से string में input ले लें.
जब भी आप खुद से string को initialize करें तब ये ध्यान रखें की string length character array के size से ज्यादा ना हो क्योंकि ये काम compiler आपके लिए नहीं करेगा.
आप C programming में बहुत तरह से string initialize कर सकते हो जिन्हें मैंने नीचे detailed में explain किया है.
char str1[] = "Hindi Me Tutorials"; char str2[20] = "Bharat"; char str3[] = {'K','A','R','A','N','\0'}; char str4[14] = {'H','e','l','l','o',' ','W','o','r','l','d','\0'};
जैसे C programming में हम char data type की values को single double quotes के अंदर लिखते हैं ठीक ऐसे ही strings को हम double quotes में लिखते हैं.
ऊपर string initialization के शुरू के 2 examples में हमने string को double quotes के अंदर लिखकर ही char array (string) को assign किया है.
जब आप इस तरह से string initialize करते हो तो char array के last में अपने आप null character (‘\0’) add हो जाता है.
लेकिन जब किसी string को char array की तरह initialize करते है तब आपको खुद से array के last में null character (‘\0’) add करना होता है जैसा की आप ऊपर string initialization के last के 2 examples देख सकते हो.
String Input Output in C Programming
C programming में आप users से बहुत तरह से strings input ले सकते हो और बहुत तरह से strings को screen (console) पर print भी करा सकते हो.
Users से strings input लेने के लिए हम ज्यादातर scanf(), और gets() functions का use करते हैं और string output के लिए हम ज्यादातर printf() और puts() functions का use करते हैं.
String input output using scanf() and printf() functions
जब आप scanf() और printf() functions की help से string input और output करते तब हम string के लिए %s format specifier का use करते हैं और दोनों functions में string variables के साथ array size brackets [ ] का use नहीं करते हैं.
इसके अलावा scanf() function से string input लेते वक्त आप char array यानी string variable के आगे “&” symbol का use नहीं करते हैं क्योंकि array name एक pointer की तरह act करता है.
जैसे आप अभी तक सभी data types के variables में scanf() function की help से input लेते आये हो ठीक ऐसे ही आप scanf() function की help से string भी input ले सकते हो.
लेकिन इसमें थोड़ी से problem है और वो ये है की जब आप scanf() function की help से string input लेते तब string में जैसे ही space आएगा scanf() function input लेना बंद कर देता है.
scanf() function की help से आप without space string ही input ले सकते हो यानी आप ऐसा कह सकते हो आप single word ही input ले सकते हो.
Example Program: read string using scanf() function
#include <stdio.h>
int main()
{
char str[20];
printf("Enter Your Name : ");
scanf("%s",str);
printf("Your Name : %s",str);
return 0;
}
Output 1:
Enter Your Name : Karan Your Name : Karan
Output 2:
Enter Your Name : Rohit Sharma Your Name : Rohit
जैसा की आप output 2 में देख सकते हो की user ने “Rohit Sharma” input किया लेकिन string में सिर्फ “Rohit” ही store हुआ और इसलिए “Rohit” ही print हुआ.
String input output using gets() and puts() functions
जब आप users से multi-word strings input लेना चाहते हो तो उसके लिए हम gets() function का use करते हैं.
gets() function की ऐसी string input ले सकते हो जिसमें space भी मौजूद है. gets() function तब तक string input लेता है जब तक आप keyboard enter key (newline) press नहीं कर देते.
puts() function की help से आप किसी भी string को screen पर print करा सकते हो. puts() function में आप सिर्फ string variable name लिखते हैं उसके अलावा आप format specifier या कोई और text message नहीं लिखते.
मुझे puts() function कुछ खास पसंद नहीं इसलिए मैं हमेशा printf() function का ही use करता हूँ लेकिन सिर्फ आपको समझाने के लिए मैंने नीचे example में puts function का use किया है.
Example Program: read string using gets() function
#include <stdio.h>
int main()
{
char str[20];
printf("Enter Your Name : ");
gets(str);
printf("Your Name : ");
puts(str);
return 0;
}
Output 1:
Enter Your Name : Karan Your Name : Karan
Output 2:
Enter Your Name : Rohit Sharma Your Name : Rohit Sharma
String Functions in C Programming
C programs में string input output के अलावा हम string के साथ बहुत तरह के operations perform करते हैं जैसे string की length पता करना, string को reverse करना इत्यादि.
इस तरह के common string operations के लिए आपको (programmers) को खुद से code ना करना पड़े इसके लिए C language में आपको बहुत सारे built-in functions का support मिलता है.
String से related काम करने के लिए जो built-in functions है वो आपको “string.h” header file में मिल जाते हैं.
इसलिए string functions को अपने C programs में use करने के लिए आपको string.h header file को भी अपने program के top में include करना होता है.
मैंने नीचे सबसे ज्यादा common use होने वाले string functions की list दी है. किसी भी function की examples के साथ पूरी जानकारी के लिए आप function name (link) पर click करके tutorial पढ़ सकते हो.
strlen() function – इस function की help से आप किसी string की length find कर सकते हो.
strcpy() function – इस function की help से आप एक string को दूसरी string में copy कर सकते हो.
strcat() function – इस function की help से आप एक string को दूसरी string के पीछे concatenate (जोड़) कर सकते हो.
strncat() function – इस function की help से आप एक string के शुरू के n characters को दूसरी string के पीछे concatenate (जोड़) कर सकते हो.
strcmp() function – इस function की help से आप two strings को character case sensitivity के साथ compare कर सकते हो.
strcmpi() function – इस function की help से आप two strings को character case insensitivity के साथ compare कर सकते हो.
strncmp() function – इस function की help से आप two strings के शुरू के n characters को character case sensitivity के साथ compare कर सकते हो.
strnicmp() function – इस function की help से आप two strings के शुरू के n characters को character case insensitivity के साथ compare कर सकते हो.
strrev() function – इस function की help से आप string को reverse कर सकते हो.
strupr() function – इस function की help से आप string को uppercase में convert कर सकते हो.
strlwr() function – इस function की help से आप string को lowercase में convert कर सकते हो.
String Operations without using Standard Functions
जैसा की हमने ऊपर देखा की C programming में strings input, output और अन्य operations के लिए standard functions का use करते हैं.
लेकिन अगर आप strings और string operations को अच्छे से समझना चाहते हो तो उसके लिए आपको ये समझना जरूरी है की कैसे आप बिना standard functions के सभी strings operations कर सकते हो.
मैंने नीचे string input और output के लिए 3 तरीके explain किये हैं. अगर आप इन तीनों तरीकों को अच्छे से समझ लेंगे तो आपको strings से related किसी भी program को समझने और बनाने में problem नहीं आएगी.
Input String as Array and Print as Array
#include <stdio.h>
int main()
{
char str[20],ch;
int i,j;
printf("Enter Your String : ");
for(i=0;(ch=getchar())!='\n';i++)
{
str[i]=ch;
}
printf("Your String : ");
for(j=0;j<i;j++)
{
printf("%c",str[j]);
}
return 0;
}
Output:
Enter Your String : Hello World Your String : Hello World
Explanation:
ऊपर program में आपको सिर्फ for loop की condition समझनी है. Condition में सबसे पहले हमने getchar() function की help से एक single character input लेकर variable ch में store किया है.
अभी for loop condition expression पूरा नहीं हुआ है क्योंकि अभी variable ch में जो हमने character input लिया उस character और ‘\n’ (enter key character) के साथ condition (ch != ’\n’) check होगी.
ये condition तब तक false नहीं होगी जब तक user keyboard से enter key press नहीं करते क्योंकि C programming में enter key के लिए ‘\n’ character का use किया जाता है.
जैसे मान कर चलिए user अगर char ‘K’ input करता है तो condition (‘K’ != ’\n’) check होगी और condition false हो जाएगी जिसकी वजह से program का control loop के अंदर आ जाएगा और variable ch की value str array में store हो जाएगी.
इसके बाद program का control loop के updation पर जाएगा और फिर से condition expression पर user से char input लिया जाएगा.
इसी तरह से loop तब तक चलता है रहेगा तब तक user enter key (‘\n’) press नहीं करता. for loop में variable i का use हमने array indexing के लिए किया है.
जैसा की आप ऊपर image में देख पा रहे character N को str array में insert करने के बाद variable i की value में increment हुआ और फिर जब user ने enter key (‘\n’) press की थी condition false हो गयी और program का control loop से बाहर आ जाएगा.
str array को print कराने के लिए हमने एक दूसरा loop चलाया जो 0 से <i यानी <5 तक चलेगा और इस loop में variable j का use indexing के लिए किया गया है.
Input String as Array and Print as String
#include <stdio.h>
int main()
{
char str[20],ch;
int i;
printf("Enter Your String : ");
for(i=0;(ch=getchar())!='\n';i++)
{
str[i]=ch;
}
str[i]='\0';
printf("Your String : %s",str);
return 0;
}
Output:
Enter Your String : Hello World Your String : Hello World
Explanation:
आप किसी char array को string की तरह directly print नहीं करा सकते. इसके लिए आपको जहाँ char array में elements input खत्म हुआ है उसके बाद वाले index पर null character ‘\0’ add करना होगा.
ऐसा करने से वो char array string में change हो जाएगा और फिर आप उस string को print करा सकते हो.
Input String as String and Print As Array
#include <stdio.h>
int main()
{
char str[20],ch;
int i;
printf("Enter Your String : ");
gets(str);
printf("Your String : ");
for(i=0;(ch=str[i])!='\0';i++)
{
printf("%c",str[i]);
}
return 0;
}
Output:
Enter Your String : Hello World Your String : Hello World
Explanation:
जैसा की हम ऊपर पढ़ चुके हैं की जब हम standard input functions की help से string input लेते हैं तो string array के last में null character ‘\0’ अपने आप add हो जाता है.
इसलिए हमने ऊपर loop में string array को print कराने के लिए loop में condition ये लगायी है की loop तब तक चलता रहें जब तक array element value not equal to ‘\0’ नहीं हो जाती.
What’s Next: इस tutorial में हमने C String के बारे में पढ़ा. Next tutorial में हम C programming में Structure का use करना सीखेंगे