Character Manipulation Functions

Character Manipulation Functions: कई बार हमें ऐसी जरूरतें पडती हैं, जिसमें किसी मान को Store तो एक Character Array के रूप में किया गया होता है, लेकिन Access करते समय उस Character Array में Stored मान को Integer या Float प्रकार के मान के रूप में Use करना होता है।

इस स्थिति में हमें उस Array में Stored मान को Integer या Float प्रकार के मान में Convert करने की जरूरत पडती है। चलिए, हम इसी प्रकार की एक समस्या का समाधान प्राप्त करने की कोशिश करते हैं। निम्न Example Program में हम एक Character Array में Stored Integer प्रकार के मान को Integer प्रकार के मान में Convert करने के लिए एक Function Create कर रहे हैं:

#include <ctype.h>
/* atoi:  convert String Integer to Numerical Integer */

int atoi(char strInteger[])
{
	int i, n, sign;

	for (i = 0; isspace(strInteger[i]); i++) /* skip white space */
			 ;
	sign = (strInteger[i] == '-') ? -1 : 1;
	if (strInteger[i] == '+' || strInteger[i] == '-') /* skip sign */
		   i++;
	for (n = 0; isdigit(strInteger[i]); i++)
	  n = 10 * n + (strInteger[i] - '0');

	return sign * n;
}

इस Function में हमने ctype.h नाम की Header File को Include किया है। इस Header File में Character Manipulation से सम्बंधित कई Functions हैं, जिन्हें हम हमारी जरूरत के आधार पर Use कर सकते हैं। जब हमें किसी Character Array में String Format में Stored String Integer को Numerical Integer में Convert करना होता है, तब हम उस Character Array को इस Function में Formal Argument के रूप में Pass करते हैं।

ये Function Argument के रूप में Calling Function से String Integer को प्राप्त करता है और उस String Integer को Numerical Integer मान में Convert करके फिर से Calling Function में Return कर देता है।

जब ये Function Call होता है, तब Argument के रूप में इसमें उस String Integer Array को भेजा जाता है, जिसमें String Format में Integer मान Stored होता है। ये Function उस मान को strInteger नाम के Array Variable में प्राप्त करता है।

किसी Character Array में जो Integer मान Store होता है, उस मान को Store करते समय String Integer मान से पहले Space का प्रयोग किया गया हो सकता है, जबकि एक Integer प्रकार के मान में कोई Space नहीं होता है। इसलिए सबसे पहले हमें किसी String Integer में स्थित Spaces को Remove करना होता है।

किसी Character Array में से Space को खोजने का काम करने के लिए हम ctype.h नाम की Header File में Define किए गए isspace() Function को Use करते हैं। ये Function उस स्थिति में True Return करता है, जब इसे किसी Character Array में Space, Tab, New Line Character या कोई अन्‍य Blank Space Character प्राप्त होता है। इस Function को निम्नानुसार एक for Loop में Use किया गया है:

for (i = 0; isspace(strInteger[i]); i++) 	/* skip white space */
           ;

इस Loop की Body नहीं है, क्योंकि इस Loop में हमें कोई Extra काम नहीं करवाना है। चूंकि इस Function में आने वाला Argument एक One-Dimensional Character Array है और किसी 1-D Array में स्थित सभी Characters को एक Index Number द्वारा Access किया जा सकता है।

इस Loop से हमारी Requirement भी यही है कि हम इस Character Array के हर Element पर जा कर ये Check करें, कि उस Index Number की Position पर कोई Space Store है या नहीं। ये Loop तब तक चलता है, जब तक Computer को Character Array में Blank Space प्राप्त होता रहता है, जैसे ही isspace() Function को Blank Space के अलावा कोई Character प्राप्त होता है, ये Function False Return करता है, जिससे Loop Terminate हो जाता है।

उदाहरण के लिए मानलो कि किसी Character Array में Integer मानों से पहले चार Space हैं, तो ये Loop चार बार चलता, जिससे Variable i का मान 3 हो जाता, जो इस बात का Signal है कि Actual Integer मान Character Array के Index Number 3 से शुरू हो रहा है।

किसी Character Array में किसी मान को Store करते समय उसके साथ Sign का चिन्ह भी Store किया गया हो सकता है। इस स्थिति में अब हमें ये Check करना होता है, कि Character Array में ‘+’ या ‘-‘ जैसा कोई चिन्ह है या नहीं। इस बात को Check करने के लिए Program में अगले Statement के रूप में निम्नानुसार एक Ternary Operator Use किया गया है:

       sign = (strInteger[i] == ‘-‘) ? -1 : 1;

मानलो कि हमारे Character Array में चार Space थे जिसे पिछले Loop का प्रयोग करके हमने Skip किया। Skip करने पर i का मान 3 हो गया, जो कि Character Array के Index Number 3 को Specify करता है। चूंकि अब Space नहीं है इसका मतलब ये है कि Space के अलावा कोई Character है और वह Character Minus (–) है या नहीं इस बात की जांच करने के लिए हमने इस Statement को लिखा है।

ये Statement Character Array के Index Number 3 को Minus Sign के लिए Check करता है और यदि Computer को इस Index Number पर Minus (‘-‘) का Character मिलता है, तो Computer sign नाम के Variable में -1 Store कर देता है, जो इस बात का संकेत होता है, कि Character Array में एक Minus Sign वाली संख्‍या Stored है। चिन्ह का पता लगाने के बाद फिर से एक Loop चलाया जाता है और ये Loop अब Character Array में Stored सभी Digits को Integer में Convert करने का काम करता है।

Buy this eBook for Complete Discussion about

isditit() Function

atoi() Function

itoa() function

strlen() Function

reverse() Function

String Swapping

String Reversing


Array of Pointers to String
Preprocessor Directives in C

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS