सी प्रोग्रामिंग में स्ट्रोक () के साथ स्ट्रिंग्स को कैसे विभाजित करें?

Si Programinga Mem Stroka Ke Satha Stringsa Ko Kaise Vibhajita Karem



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

स्ट्रोक () फ़ंक्शन कैसे काम करता है?

का उपयोग कर एक स्ट्रिंग को विभाजित करने के लिए स्ट्रोक () , आपको पहले यह समझने की आवश्यकता है कि यह कैसे काम करता है। स्ट्रोक () इनपुट स्ट्रिंग वर्ण को चरित्र द्वारा तब तक पढ़ता है जब तक कि यह एक सीमांकक के पार न आ जाए। एक बार सीमांकक मिल जाने के बाद, स्ट्रोक () इसे एक अशक्त वर्ण '\0' से बदल देता है, प्रभावी रूप से मूल स्ट्रिंग को दो भागों में विभाजित करता है। स्ट्रिंग के पहले वर्ण के लिए एक सूचक तब फ़ंक्शन द्वारा लौटाया जाता है। स्ट्रोक () फ़ंक्शन का सिंटैक्स है:

strtok ( चार * एसटीआर , कॉन्स्ट चार * मैं साझा करता हूं ) ;

स्ट्रोक () फ़ंक्शन दो तर्क लेता है- टोकन के सेट में पहले टोकन के लिए एक सूचक और एक स्ट्रिंग जो सीमांकक वर्ण रखता है। यह अगले टोकन के लिए एक संकेतक लौटाता है, जो अंतिम टोकन को विभाजित करने वाले सीमांकक के तुरंत बाद शुरू होता है। यदि अधिक टोकन नहीं हैं तो यह NULL लौटाता है।







सी प्रोग्रामिंग में स्ट्रेटोक () के साथ स्ट्रिंग्स को कैसे विभाजित करें?

यहाँ कैसे उपयोग करने का एक उदाहरण है स्ट्रोक () एक स्ट्रिंग विभाजित करने के लिए:



#शामिल

#शामिल

int यहाँ मुख्य ( ) {

चार इनपुट [ ] = 'लिनक्स, संकेत' ;

चार * टोकन ;

टोकन = strtok ( इनपुट , ',' ) ;

जबकि ( टोकन != व्यर्थ ) {

printf ( '%एस \एन ' , टोकन ) ;

टोकन = strtok ( व्यर्थ , ',' ) ;

}

वापस करना 0 ;

}

उपरोक्त उदाहरण में, हम पहले एक चार के लिए एक सूचक घोषित करते हैं। हम तब उपयोग करते हैं स्ट्रोक () इनपुट स्ट्रिंग को टोकन में विभाजित करने के लिए। की पहली कॉल स्ट्रोक () दो तर्क लेता है: इनपुट स्ट्रिंग और सीमांकक स्ट्रिंग ','। पहला टोकन, 'लिनक्स,' वह है स्ट्रोक () सूचक के रूप में लौटता है . हम तब इनपुट स्ट्रिंग के माध्यम से पुनरावृति करने के लिए थोड़ी देर के लूप का उपयोग करते हैं स्ट्रोक () शेष टोकन को विभाजित करना जारी रखने के लिए एक पूर्ण सूचक के साथ। डिलीमीटर स्ट्रिंग को फिर से एक तर्क के रूप में पारित किया जाता है स्ट्रोक () सीमांकक वर्णों को इंगित करने के लिए।



उत्पादन





स्ट्रोकॉक () फ़ंक्शन की सीमाएं

1: मूल स्ट्रिंग को संशोधित करता है

स्ट्रोक () समारोह स्ट्रिंग की एक प्रति वापस नहीं करता है; इसके बजाय, यह मूल स्ट्रिंग को संशोधित करता है। इसलिए, यदि आपको इसे विभाजित करने के बाद स्ट्रिंग का एक असंशोधित संस्करण रखने की आवश्यकता है, तो आपको आह्वान करने से पहले मूल स्ट्रिंग की एक प्रति बनानी चाहिए स्ट्रोक () .



2: अतुल्यकालिक

की एक महत्वपूर्ण सीमा स्ट्रोक () यह है कि इसे एक समय में केवल एक ही स्ट्रिंग पर उपयोग किया जा सकता है। दूसरे शब्दों में, आप इसका उपयोग एक साथ कई स्ट्रिंग्स को टोकननाइज़ करने के लिए नहीं कर सकते हैं।

3: सीमित क्षमता

एक और संभावित सीमा है स्ट्रोक () बार-बार सीमांकक को संभालने की सीमित क्षमता है। उदाहरण के लिए, यदि आपकी स्ट्रिंग में शब्दों के बीच लगातार रिक्त स्थान हैं, स्ट्रोक () इसे एक सीमांकक के रूप में मानता है। ऐसे मामलों को संभालने के लिए, आपको एक अलग दृष्टिकोण का उपयोग करना होगा।

निष्कर्ष

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