سی پروگرامنگ میں strtok() کے ساتھ سٹرنگس کو کیسے تقسیم کیا جائے؟

Sy Prwgramng My Strtok K Sat S Rngs Kw Kys Tqsym Kya Jay



تقسیم کرنے والی ڈور متن کی پروسیسنگ، ڈیٹا کا تجزیہ یا تجزیہ کرنے جیسی مختلف وجوہات کے لیے اہم ہے، اور C پروگرامنگ لینگویج اس کام کو سنبھالنے کے متعدد طریقے پیش کرتی ہے۔ تاہم، سب سے زیادہ مقبول C فنکشن جو اجازت دیتا ہے۔ تقسیم کرنے والی تار ایک مخصوص ڈیلیمیٹر کے ذریعہ متعدد ٹوکنز میں ہے۔ strtok() . لائبریری فنکشن ہونے کی وجہ سے، یہ معیاری C لائبریری میں دستیاب ہے جو سٹرنگ آپریشنز کو سپورٹ کرتی ہے۔

strtok() فنکشن کیسے کام کرتا ہے؟

کا استعمال کرتے ہوئے ایک تار کو تقسیم کرنے کے لئے strtok() آپ کو پہلے یہ سمجھنے کی ضرورت ہے کہ یہ کیسے کام کرتا ہے۔ دی strtok() ان پٹ سٹرنگ کیریکٹر کو کریکٹر کے حساب سے پڑھتا ہے جب تک کہ یہ کسی حد بندی میں نہ آجائے۔ ایک بار جب حد بندی مل جاتی ہے، strtok() اصل سٹرنگ کو مؤثر طریقے سے دو حصوں میں تقسیم کرتے ہوئے اسے ایک null کریکٹر '\0' سے بدل دیتا ہے۔ سٹرنگ کے پہلے کردار کی طرف اشارہ کرنے والا پھر فنکشن کے ذریعے واپس آ جاتا ہے۔ دی strtok() فنکشن کا نحو ہے:

strtok ( چار * str , const چار * میں بانٹتا ہوں۔ ) ;

دی strtok() فنکشن دو دلائل لیتا ہے- ٹوکنز کے سیٹ میں پہلے ٹوکن کی طرف اشارہ کرنے والا اور ایک تار جو حد بندی کرنے والے حروف کو رکھتا ہے۔ یہ اگلے ٹوکن پر ایک پوائنٹر لوٹاتا ہے، جو آخری ٹوکن کو تقسیم کرنے والے حد بندی کے فوراً بعد شروع ہوتا ہے۔ اگر مزید ٹوکن نہ ہوں تو یہ NULL لوٹاتا ہے۔







سی پروگرامنگ میں Strtok() کے ساتھ سٹرنگس کو کیسے تقسیم کیا جائے؟

یہاں استعمال کرنے کے طریقہ کی ایک مثال ہے۔ strtok() تار کو تقسیم کرنا:



# شامل کریں

#include

int مرکزی ( ) {

چار ان پٹ [ ] = 'لینکس، اشارہ' ;

چار * ٹوکن ;

ٹوکن = strtok ( ان پٹ , ) ;

جبکہ ( ٹوکن != خالی ) {

printf ( '%s \n ' , ٹوکن ) ;

ٹوکن = strtok ( خالی , ) ;

}

واپسی 0 ;

}

مندرجہ بالا مثال میں، ہم سب سے پہلے چار کی طرف ایک پوائنٹر کا اعلان کرتے ہیں۔ پھر ہم استعمال کرتے ہیں۔ strtok() ان پٹ سٹرنگ کو ٹوکن میں تقسیم کرنے کے لیے۔ کی پہلی کال strtok() دو دلائل لیتا ہے: ان پٹ سٹرنگ اور ڈیلیمیٹر سٹرنگ ','۔ پہلا ٹوکن، 'لینکس،' وہی ہے۔ strtok() کی طرف اشارہ کے طور پر واپس آتا ہے۔ . اس کے بعد ہم ان پٹ سٹرنگ کے ذریعے تکرار کرنے کے لیے ایک while لوپ کا استعمال کرتے ہیں۔ strtok() بقیہ ٹوکنز کو تقسیم کرنا جاری رکھنے کے لیے NULL پوائنٹر کے ساتھ۔ حد بندی سٹرنگ کو ایک بار پھر دلیل کے طور پر پاس کیا گیا ہے۔ strtok() حد بندی کرنے والے حروف کی نشاندہی کرنے کے لیے۔



آؤٹ پٹ





Strtok() فنکشن کی حدود

1: اصل سٹرنگ میں ترمیم کرتا ہے۔

دی strtok() فنکشن سٹرنگ کی کاپی واپس نہیں کرتا ہے۔ اس کے بجائے، یہ اصل تار میں ترمیم کرتا ہے۔ لہذا، اگر آپ کو اسٹرنگ کو تقسیم کرنے کے بعد اس کا غیر ترمیم شدہ ورژن حاصل کرنے کی ضرورت ہے، تو آپ کو درخواست کرنے سے پہلے اصل سٹرنگ کی ایک کاپی بنانی چاہیے۔ strtok() .



2: متضاد

کی ایک اہم حد strtok() یہ ہے کہ اسے ایک وقت میں صرف ایک تار پر استعمال کیا جا سکتا ہے۔ دوسرے لفظوں میں، آپ اسے بیک وقت متعدد تاروں کو ٹوکنائز کرنے کے لیے استعمال نہیں کر سکتے۔

3: محدود صلاحیت

ایک اور ممکنہ حد یہ ہے۔ strtok() بار بار ڈیلیمیٹر کو سنبھالنے کی محدود صلاحیت ہے۔ مثال کے طور پر، اگر آپ کی تار میں الفاظ کے درمیان لگاتار خالی جگہیں ہیں، strtok() اسے ایک واحد حد بندی کے طور پر مانتا ہے۔ ایسے معاملات کو سنبھالنے کے لیے، آپ کو ایک مختلف طریقہ استعمال کرنا پڑے گا۔

نتیجہ

دی strtok() فنکشن سی پروگرامنگ میں تاروں کو تقسیم کرنے کے لیے ایک بہت ہی مفید فنکشن ہے۔ یہ ایک ان پٹ سٹرنگ اور ایک ڈیلیمیٹر سٹرنگ لیتا ہے اور ان پٹ سٹرنگ میں پائے جانے والے پہلے ٹوکن پر پوائنٹر لوٹاتا ہے۔ strtok() تباہ کن ہے، اس طرح اگر آپ کو اصل سٹرنگ کی سالمیت کو برقرار رکھنے کی ضرورت ہے، تو اس کی بجائے اس کی نقل تیار کرنے کا مشورہ دیا جاتا ہے۔ اب جب کہ آپ جانتے ہیں کہ اسے کیسے کرنا ہے، آپ پروسیسنگ کے لیے کسی بھی تار کو چھوٹے ٹکڑوں میں کاٹ سکتے ہیں۔