سٹرنگ موازنہ: سی پروگرامنگ۔

String Comparison C Programming



C زبان میں سٹرنگ حروف کی ایک صف ہے ، جسے کالعدم حرف ( 0) کے ساتھ ختم کیا جاتا ہے۔ اس پراپرٹی کے ڈور کا استعمال موازنہ کیا جاتا ہے۔







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



صارف کے متعین فنکشن کا استعمال کرتے ہوئے سٹرنگ موازنہ:

ہم ایک فنکشن لکھیں گے۔ stringCompare () تاروں کا موازنہ کرنا۔ ہم تار کو عبور کرتے ہیں اور تار کے ہر حرف کا موازنہ کرتے ہیں یہاں تک کہ ہم کسی ایک کے اختتام تک پہنچ جاتے ہیں یا دونوں یا ایک مماثلت پائے جاتے ہیں۔ اگر دونوں ڈوروں کے اختتام تک ٹریورسل پہنچ جاتا ہے ، تو ڈور مماثل ہوتے ہیں۔ بصورت دیگر ، تاریں مماثل ہیں۔



01۔./
02۔.
03۔.#شامل کریں
04۔.
05۔.intstringCompare( چارstr1[ ]، چارstr2[ ] )
06۔.{
07۔.intمیں=؛
08۔
09۔ جبکہ(str1[میں] ==str2[میں] )
10۔.
پندرہ.
16۔.اگر(str1[میں] == '' &&str2[میں] == '' )
17۔.واپسی ؛
18۔.اور
19۔.واپسی -؛
بیس.
اکیس.}
22۔.
2. 3۔.
24۔.intمرکزی()
25۔.{
26۔.چارstr1[30۔]،str2[30۔]؛
27۔.
28۔. پرنٹ ایف ('پہلا تار درج کریں:')؛
29۔. سکینف ('٪ [n]٪ * c '،str1)؛
30۔. پرنٹ ایف ('دوسری سٹرنگ درج کریں:')؛
31۔. سکینف ('٪ [n]٪ * c '،str2)؛
32۔.
33۔.اگر(stringCompare(str1،str2) == )
3. 4۔. پرنٹ ایف ('ڈور برابر ہیں۔n')؛
35۔.اور
36۔. پرنٹ ایف ('ڈور برابر نہیں ہیں۔n')؛
37۔.
38۔.واپسی ؛ 39۔.}





یہاں ہم لوپ اور متغیر کا استعمال کرتے ہوئے ڈور کو عبور کرتے ہیں۔ میں . جب حروف دونوں ڈوروں کی ایک ہی پوزیشن میں برابر ہوں تو ، کی قیمت میں 1 (لائن 13) سے بڑھا دیا گیا ہے۔ اگر حروف برابر نہیں ہیں (لائن 09) یا ہم تار (لائن 11) کے اختتام تک پہنچ جاتے ہیں ، پھر جبکہ لوپ ایک وقفہ ہے۔ جبکہ لوپ کے بعد ، ہم چیک کرتے ہیں کہ دونوں سٹرنگ ٹریورسلز اختتام تک پہنچے ہیں یا نہیں (لائن 16)۔ اگر دونوں ڈوروں کے اختتام تک ٹریورسل پہنچ جاتا ہے ، تو ڈور برابر ہوتی ہے ورنہ نہیں۔

بلٹ ان لائبریری افعال کا استعمال کرتے ہوئے سٹرنگ موازنہ:

مندرجہ ذیل لائبریری افعال کو سٹرنگ موازنہ کے لیے استعمال کیا جا سکتا ہے۔ تمام افعال میں اعلان کیا گیا ہے۔ string.h ہیڈر فائل.



strcmp () فنکشن:

یہ فنکشن فنکشن میں گزرنے والی دو تاروں کا موازنہ کرتا ہے۔

نحو۔ :

int strcmp (const چار *str1، const چار *str2)

واپسی کی قیمت: اگر ڈور برابر ہو تو 0 لوٹائیں۔ ایک منفی عدد واپس کریں اگر پہلی تار کے پہلے بے مثال کردار کی ASCII قدر دوسری سٹرنگ سے کم ہو۔ ایک مثبت عدد واپس کریں اگر پہلی تار کے پہلے بے مثال کردار کی ASCII قدر دوسری سٹرنگ سے زیادہ ہو۔ کچھ سسٹم پہلے مماثل کردار کی ASCII ویلیو کا فرق لوٹاتے ہیں اور کچھ سسٹم ریٹرن -1 ہوتے ہیں اگر پہلی سٹرنگ کے پہلے بے مثال کردار کی ASCII ویلیو دوسری سٹرنگ سے کم ہو اور ریٹرن 1 اگر ASCII ویلیو کے پہلے بے مثال کردار کی پہلی تار دوسری سٹرنگ سے زیادہ ہے۔

مثال واپسی کی قیمت۔ وضاحت
strcmp ( ہیلو ورلڈ ، ہیلو ورلڈ۔ ) دو تار ایک جیسے ہیں۔
strcmp ( ہیلو ، ہیلو 0 ورلڈ۔ ) سٹرنگز کا موازنہ کردار ' 0' تک کیا جاتا ہے۔ پہلی سٹرنگ بطور ڈیفالٹ ' 0' پر ختم ہوتی ہے ، اور دوسری سٹرنگ میں 'ہیلو' کے بعد ' 0' کیریکٹر ہوتا ہے۔
strcmp ( ہیلو 0 0 0 Hello ، ہیلو 0 ورلڈ۔ ) سٹرنگز کا موازنہ کریکٹر ' 0' تک کیا جاتا ہے۔
strcmp ( ہیلو ورلڈ ، ہیلو ورلڈ۔ ) منفی عدد پہلی سٹرنگ ('H') کے پہلے بے مثال کردار کی ASCII ویلیو دوسری سٹرنگ ('h') سے کم ہے
strcmp ( ہیلو ورلڈ ، ہیلو ورلڈ۔ ) مثبت عدد پہلی سٹرنگ ('h') کے پہلے بے مثال کردار کی ASCII ویلیو دوسری سٹرنگ ('H') سے زیادہ ہے

strncmp () فنکشن:

یہ فنکشن فنکشن کی طرح ہے۔ strcmp () ، لیکن یہاں ہمیں یہ بتانا ہوگا کہ فنکشن میں اضافی دلیل دے کر کتنے بائٹس کا موازنہ کیا جاتا ہے۔

نحو:

int strncmp (const چار *str1، const چار *str2، size_tn)

واپسی کی قیمت: فنکشن واپس آتا ہے۔ اگر پہلا n دو ڈور کے حروف برابر ہیں دوسری صورت میں ، یہ منفی یا مثبت عدد واپس کرتا ہے جو پہلے مماثل کردار کی ASCII قدر کے مابین فرق کی علامت پر منحصر ہے۔

مثال واپسی کی قیمت۔ وضاحت
strncmp ( ہیلو ورلڈ ، ہیلو ورلڈ ، 5۔ ) پہلے 5 حروف ایک جیسے ہیں۔
strncmp ( ہیلو ، ہیلو 0 ورلڈ ، 5۔ ) پہلے 5 حروف ایک جیسے ہیں۔
strncmp ( ہیلو 0 0 0 Hello ، ہیلو 0 ورلڈ ، 8۔ ) ' 0' دونوں ڈوروں میں پہلے 5 حروف کے بعد ہے۔ لہذا ، موازنہ 5 نہیں 8 کے بعد رک گیا ہے۔
strncmp ( ہیلو ورلڈ ، ہیلو ورلڈ ، 5۔ ) منفی عدد پہلی سٹرنگ ('H') کے پہلے بے مثال کردار کی ASCII ویلیو دوسری سٹرنگ ('h') سے کم ہے

strcasecmp () فنکشن:

یہ فنکشن فنکشن کی طرح ہے۔ strcmp () ، لیکن یہاں ڈور کیس حساس نہیں ہیں۔

نحو:

intstrcasecmp(const چار *str1، const چار *str2)

واپسی کی قیمت: ایسا ہی strcmp () ، لیکن ڈور کے طور پر سمجھا جاتا ہے۔ کیس میں حساس .

مثال واپسی کی قیمت۔ وضاحت
strcasecmp ( ہیلو ورلڈ ، ہیلو ورلڈ۔ ) دو تار ایک جیسے ہیں۔
strcasecmp ( ہیلو ، ہیلو 0 ورلڈ۔ ) سٹرنگز کا موازنہ کریکٹر ' 0' تک کیا جاتا ہے۔ پہلی سٹرنگ بطور ڈیفالٹ ' 0' پر ختم ہوتی ہے ، اور دوسری سٹرنگ میں 'ہیلو' کے بعد ' 0' کیریکٹر ہوتا ہے۔
strcasecmp ( ہیلو ورلڈ ، ہیلو ورلڈ۔ ) ڈور ہیں۔ کیس میں حساس تو ، ہیلو ورلڈ اور ہیلو ورلڈ ایک جیسے ہیں۔

strncasecmp () فنکشن:

یہ فنکشن فنکشن کی طرح ہے۔ strncmp () ، لیکن یہاں ڈور کیس حساس نہیں ہیں۔

نحو:

intstrncasecmp(const چار *str1، const چار *str2)

واپسی کی قیمت: ایسا ہی strncmp () ، جب ڈور کو کیس میں حساس سمجھا جاتا ہے۔

مثال واپسی کی قیمت۔ وضاحت
strncasecmp ( ہیلو ورلڈ ، ہیلو ورلڈ ، 5۔ ) پہلے 5 حروف ایک جیسے ہیں۔
strncasecmp ( ہیلو ، ہیلو 0 ورلڈ ، 5۔ ) پہلے 5 حروف ایک جیسے ہیں۔
strncasecmp ( ہیلو 0 0 0 Hello ، ہیلو 0 ورلڈ ، 8۔ ) ' 0' دونوں ڈوروں میں پہلے 5 حروف کے بعد ہے۔ لہذا ، موازنہ 5 نہیں 8 کے بعد رک گیا ہے۔
strncasecmp ( ہیلو ورلڈ ، ہیلو ورلڈ ، 5۔ ) ڈور ہیں۔ کیس میں حساس تو ، ہیلو اور ہیلو ایک جیسے ہیں۔

memcmp () فنکشن:

یہ فنکشن بائٹ بائٹ کے دو میموری بلاکس کا موازنہ کرتا ہے۔ ہمیں میموری بلاکس کے دو پوائنٹر اور موازنہ کرنے کے لیے بائٹس کی تعداد کو پاس کرنا ہوگا۔

نحو:

int memcmp (const باطل *str1، const باطل *str2، size_tn)

واپسی کی قیمت: فنکشن 0 لوٹتا ہے اگر دو میموری بلاکس ( n بائٹس) برابر ہیں؛ بصورت دیگر ، یہ بائٹس کی پہلی مماثل جوڑی کے مابین فرق لوٹاتا ہے (بائٹس کو بغیر دستخط شدہ چار اشیاء سے تعبیر کیا جاتا ہے ، پھر اسے انٹ میں ترقی دی جاتی ہے)۔

مثال واپسی کی قیمت۔ وضاحت
memcmp ( ہیلو ورلڈ ، ہیلو ورلڈ ، 5۔ ) پہلے 5 حروف ایک جیسے ہیں۔
memcmp ( ہیلو 0 0 0 Hello ، ہیلو 0 ورلڈ ، 8۔ ) منفی عدد پہلے 6 حروف ایک جیسے ہیں ، لیکن 7 واں کردار مختلف ہے۔ یہاں موازنہ بند نہیں ہوا۔ strncmp () جب ' 0' حرف مل رہا ہو۔
memcmp ( ہیلو ورلڈ ، ہیلو ورلڈ ، 11۔ ) منفی عدد پہلی سٹرنگ ('H') کے پہلے بے مثال کردار کی ASCII ویلیو دوسری سٹرنگ ('h') سے کم ہے

مثال:

زیر بحث تمام افعال کی سی کوڈ مثال مندرجہ ذیل ہے۔

01۔./
02۔.
03۔.#شامل کریں
04۔.#شامل کریں
05۔.
06۔.intمرکزی()
07۔.{
08۔ پرنٹ ایف ('strcmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ۔') =>٪ d۔n'، strcmp ( 'ہیلو ورلڈ'،'ہیلو ورلڈ' ))؛
09۔ پرنٹ ایف ('strcmp ('ہیلو'،'ہیلو\دنیا') =>٪ d۔n'، strcmp ( 'ہیلو'،'ہیلودنیا ' ))؛
10۔. پرنٹ ایف ('strcmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ') =>٪ d۔n'، strcmp ( 'ہیلو ورلڈ'،'ہیلو ورلڈ' ) )؛
گیارہ. پرنٹ ایف ('strcmp ('ہیلو\۔۔'،'ہیلو\دنیا') =>٪ d۔n'، strcmp ( 'ہیلو'،'ہیلودنیا ' ))؛
12۔.
13۔. پرنٹ ایف ('n---------------n')؛
14۔.
پندرہ. پرنٹ ایف ('strncmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ۔'، 5) =>٪ d۔n'، strncmp ( 'ہیلو ورلڈ'،'ہیلو ورلڈ'، ))؛
16۔. پرنٹ ایف ('strncmp ('ہیلو'،'ہیلو\دنیا'، 5) =>٪ d۔n'، strncmp ( 'ہیلو'،'ہیلودنیا '، ))؛
17۔. پرنٹ ایف ('strncmp ('ہیلو\۔۔'،'ہیلو\دنیا'، 8) =>٪ d۔n'، strncmp ( 'ہیلو'،'ہیلودنیا '، ))؛
18۔. پرنٹ ایف ('strncmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ'، 5) =>٪ d۔n'، strncmp ( 'ہیلو ورلڈ'،'ہیلو ورلڈ'، ))؛
19۔.
بیس. پرنٹ ایف ('n---------------n')؛
اکیس.
22۔. پرنٹ ایف ('strcasecmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ۔') =>٪ d۔n'،strcasecmp( 'ہیلو ورلڈ'،'ہیلو ورلڈ' ))؛
2. 3۔. پرنٹ ایف ('strcasecmp ('ہیلو'،'ہیلو\دنیا') =>٪ d۔n'،strcasecmp( 'ہیلو'،'ہیلودنیا ' ))؛
24۔. پرنٹ ایف ('strcasecmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ') =>٪ d۔n'،strcasecmp( 'ہیلو ورلڈ'،'ہیلو ورلڈ' ))؛
25۔.
26۔. پرنٹ ایف ('n---------------n')؛
27۔.
28۔. پرنٹ ایف ('strncasecmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ۔'، 5) =>٪ d۔n'،strncasecmp( 'ہیلو ورلڈ'،'ہیلو ورلڈ'، ) )؛
29۔. پرنٹ ایف ('strncasecmp ('ہیلو'،'ہیلو\دنیا'، 5) =>٪ d۔n'،strncasecmp( 'ہیلو'،'ہیلودنیا '، ))؛
30۔. پرنٹ ایف ('strncasecmp ('ہیلو\۔۔'،'ہیلو\دنیا'، 8) =>٪ d۔n'،strncasecmp( 'ہیلو'،'ہیلودنیا '، ))؛
31۔. پرنٹ ایف ('strncasecmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ'، 5) =>٪ d۔n'،strncasecmp( 'ہیلو ورلڈ'،'ہیلو ورلڈ'، ))؛
32۔.
33۔. پرنٹ ایف ('n---------------n')؛
3. 4۔.
35۔. پرنٹ ایف ('memcmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ۔'، 5) =>٪ d۔n'، memcmp ( 'ہیلو ورلڈ'،'ہیلو ورلڈ'، ) )؛
36۔. پرنٹ ایف ('memcmp ('ہیلو\۔۔'،'ہیلو\دنیا'، 8) =>٪ d۔n'، memcmp ( 'ہیلو'،'ہیلودنیا '، ))؛
37۔. پرنٹ ایف ('memcmp ('ہیلو ورلڈ۔'،'ہیلو ورلڈ'، 11) =>٪ d۔n'، memcmp ( 'ہیلو ورلڈ'،'ہیلو ورلڈ'،گیارہ ))؛
38۔.
39۔.واپسی ؛ 40۔.}

نتیجہ:

لہذا ، اس ٹیوٹوریل میں ، ہم نے دیکھا ہے کہ مختلف طریقوں سے ڈوروں کا موازنہ کیسے کیا جاسکتا ہے۔ جیسا کہ ہم نے دیکھا ہے ، stringCompare () فنکشن ریٹرن -1 کو غیر مساوی ڈور کے لیے دیتا ہے ، لیکن اس میں ترمیم کی جا سکتی ہے تاکہ یہ غیر مماثل کردار کی ASCII ویلیو لوٹائے۔ آپ اسے اپنے کوڈ میں استعمال کر سکتے ہیں ، جو آپ کے لیے بہترین ہے۔