C String Concatenation۔

C String Concatenation



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

معیاری سی لائبریری فنکشن جو سٹرنگ کو جوڑنے کے لیے استعمال ہوتا ہے وہ strcat () ہے۔







فنکشن پروٹوٹائپ:

$چار * strcat (str1،str2)؛

جہاں str1 پہلی سٹرنگ ہے اور str2 دوسری سٹرنگ ہے۔ فنکشن کی ریٹرن ویلیو کنکٹنیٹڈ سٹرنگ کی طرف اشارہ ہے۔



اب ، مثال کی مدد سے ہم دیکھیں گے کہ کنکٹی نیشن کیسے کی جاتی ہے۔



مثال 1:

$ strcat (str1،str2)؛
جہاں str1 بیلا ہے۔
str2 وہٹ مین ہے۔

تار کے جوڑنے کے بعد،پہلا تار ہوگا

str1 بیلا وٹ مین۔
str2 وہٹ مین۔

جبکہ string2 ایک جیسا رہے گا۔





مثال 2:

$ strcat (str2،str1)؛
جہاں str1 بیلا ہے۔
str2 وہٹ مین ہے۔

تار کے جوڑنے کے بعد،منسلک تار ہو جائے گا

str1 بیلا۔
str2 بیلا وٹ مین۔

جبکہ string1 ایک جیسا رہے گا۔

سی ہیڈر فائل میں اعلامیہ۔

سٹرنگ ہینڈلنگ افعال ہیڈر فائل کے تحت اعلان کیے جاتے ہیں۔ اگر کوئی جوڑنے کے لیے معیاری فنکشن استعمال کرنا چاہتا ہے تو اس ہیڈر فائل کو شامل کرنے کی ضرورت ہے۔



لہذا ، ہم دو طریقوں سے سٹرنگ کنکشن حاصل کرسکتے ہیں۔ ایک معیاری سی لائبریری فنکشن استعمال کرنے کے ساتھ ہے اور دوسرا سی لائبریری فنکشن استعمال کیے بغیر۔ دونوں طریقوں کو ظاہر کرنے کے لیے مندرجہ ذیل مثال کے پروگرام ہیں۔ سی لائبریری فنکشن کا استعمال کیے بغیر سٹرنگ کنیکٹیشن کو کئی طریقوں سے لاگو کیا جا سکتا ہے۔

ہم مثال کے ساتھ آنے والے حصوں میں بھی اس پر تبادلہ خیال کریں گے۔

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

#شامل کریں

#شامل کریں

#BUF_SIZE 256 کی وضاحت کریں۔
intمرکزی()
{
چارایس 1۔[BUF_SIZE۔]،S2[BUF_SIZE۔]؛ / * دو سٹرنگ بفر */

پرنٹ ایف ('پہلا تار درج کریں۔n')؛ ] /* کنسول پر پیغام پرنٹ کریں تاکہ صارف پہلی سٹرنگ داخل کرے*/
بھاگ جاتا ہے (ایس 1۔،BUF_SIZE۔،stdin)؛ / * صارف ان پٹ سٹرنگ کو S1 بفر میں اسٹور کریں */
ایس 1۔[ سٹرلین (ایس 1۔)-] = ''؛

پرنٹ ایف (دوسری سٹرنگ درج کریں۔n')؛/* صارف کو دوسری سٹرنگ داخل کرنے کے لیے پیغام پرنٹ کریں*/
بھاگ جاتا ہے (S2،BUF_SIZE۔،stdin)؛ / * صارف ان پٹ سٹرنگ کو S2 بفر میں محفوظ کریں */
S2[ سٹرلین (S2)-] = ''؛

strcat (ایس 1۔،S2)؛ / *معیاری فنکشن کو S1 اور S2 ڈور کے ساتھ کال کریں */

پرنٹ ایف ('nمنسلک سٹرنگ٪ s ہےnn'،ایس 1۔)؛ / *آؤٹ پٹ: S1 S2 کے ساتھ مل جاتا ہے */

واپسی ؛
}

پروگرام اور آؤٹ پٹ کے سنیپ شاٹس:

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

متن کی تفصیل خود بخود درمیانے اعتماد کے ساتھ تیار ہوتی ہے۔

لائبریری فنکشن کو استعمال کیے بغیر دو سٹرنگز کو جوڑنا۔

پہلی سٹرنگ کے آخر میں دوسری سٹرنگ کو کاپی کرنے کے لیے لوپ کا استعمال۔

#شامل کریں

#شامل کریں

#BUF_SIZE 256 کی وضاحت کریں۔
intمرکزی()
{
چارایس 1۔[BUF_SIZE۔]،S2[BUF_SIZE۔]؛ /* دونوں سٹرنگ کے لیے بفر S1 ، S2 کا اعلان کریں*/
intلمبائی= ،میں،j؛ /*لوپ ٹراورسل کے لیے متغیرات کی ضرورت ہے*/

پرنٹ ایف ('پہلا تار درج کریں')؛ / * پہلا پیغام داخل کرنے کے لیے صارف کا پیغام چھاپیں */
بھاگ جاتا ہے (ایس 1۔،BUF_SIZE۔،stdin)؛ /* صارف کی ان پٹ سٹرنگ S1*/میں محفوظ کی جائے گی
ایس 1۔[ سٹرلین (ایس 1۔)-] = ''؛

پرنٹ ایف ('دوسری سٹرنگ درج کریں')؛ / * دوسرا پیغام داخل کرنے کے لیے صارف کا پیغام چھاپیں */
بھاگ جاتا ہے (S2،BUF_SIZE۔،stdin)؛ /* صارف کی ان پٹ سٹرنگ S2*/میں محفوظ کی جائے گی
S2[ سٹرلین (S2)-] = ''؛
/* S1 کی لمبائی معلوم کرنے کے لیے پہلی تار عبور کریں*/
کے لیے(میں=؛ایس 1۔[میں]! =''؛میں++۔)
{
لمبائی=لمبائی+؛
}

/*لمبائی میں S1 کا اختتام ہوگا ، لمبائی سے شروع ہوگا اور پورے S2 کو S1 میں کاپی کریں*/
کے لیے(میں=لمبائی،j=؛S2[j]! =''؛میں++ ،j++۔)
{
ایس 1۔[میں]=S2[j]؛
ایس 1۔[میں]=''؛
}

/ *S1 ، مطابقت پذیر نتیجہ پرنٹ کریں */
پرنٹ ایف ('nمنسلک سٹرنگ٪ s ہےnn'،ایس 1۔)؛
واپسی ؛
}

پروگرام اور آؤٹ پٹ کے سنیپ شاٹس:

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

لائبریری فنکشن کے بغیر ایک اور طریقہ۔

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

stringconcatenate () فنکشن کو string1 کی لمبائی حاصل کرنے کے لیے استعمال کیا جائے گا۔ اگر S2 خالی ہے تو ایک کالعدم کردار S2 کو تفویض کیا جائے گا۔

اگر S1 کے آخر میں S2 کے عنصر کو شامل کرنے کے بجائے S2 کو null کردار تفویض نہیں کیا گیا ہے جو S1 [i+j] = S2 [j] ہے ، اس سے سٹرنگ میں i کی قدر بڑھ جاتی ہے۔

ایک فنکشن بطور دلیل اصلاح شدہ ڈور (S1 ، S2) کو پاس کرکے خود کہلائے گا۔ اسے بار بار بلایا جائے گا جب تک کہ S2 خالی نہ ہو۔

منسلک S1 کو بطور main () پرنٹ کیا جائے گا۔

#شامل کریں

#شامل کریں

#BUF_SIZE 256 کی وضاحت کریں۔

/ * مندرجہ بالا تفصیل کے مطابق سٹرنگ کنیکٹیشن کو نافذ کرنے کے لیے تکراری فنکشن */
باطلstringconcatenate(چار *ایس 1۔،چار *S2)
{
جامد intمیں=؛
جامد intj؛
j= سٹرلین (ایس 1۔)؛
اگر(!S2[میں])
{
S2[میں]=''؛
}
اور
{
ایس 1۔[j] =S2[میں]؛
ایس 1۔[j+] = ''؛
میں++
stringconcatenate(ایس 1۔،S2)؛
}
}
intمرکزی()
{
چارایس 1۔[BUF_SIZE۔]،S2[BUF_SIZE۔]؛

پرنٹ ایف ('پہلی تار کی قیمت درج کریں:')؛ / * پہلا پیغام داخل کرنے کے لیے صارف کا پیغام */
بھاگ جاتا ہے (ایس 1۔،BUF_SIZE۔،stdin)؛ / * یوزر ان پٹ پہلی سٹرنگ ، S1 میں اسٹور کریں */
ایس 1۔[ سٹرلین (ایس 1۔)-] = ''؛

پرنٹ ایف ('دوسری سٹرنگ کی ویلیو درج کریں:')؛ / * دوسرا پیغام داخل کرنے کے لیے صارف کا پیغام */
بھاگ جاتا ہے (S2،BUF_SIZE۔،stdin)؛ / * یوزر ان پٹ پہلی سٹرنگ ، S2 میں اسٹور کریں */
S2[ سٹرلین (S2)-] = ''؛

stringconcatenate(ایس 1۔،S2)؛ / * S1 ، S2 کے ساتھ فنکشن کو بطور پیرامیٹر کال کریں */

پرنٹ ایف (ڈور کا مجموعہ = '٪ s'n'،ایس 1۔)؛
واپسی ؛
}

پروگرام اور آؤٹ پٹ کے سنیپ شاٹس:

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

افعال کا استعمال کرتے ہوئے جوڑنا۔

فنکشن strconcatenate () دو ڈوروں کو جوڑنے کے لیے مین () کہلاتا ہے۔

فنکشن stringlen (string1) کا استعمال کرتے ہوئے string1 کی لمبائی حاصل کرتا ہے۔

string2 [i] کے عناصر کو string1 [i+j] میں جوڑیں۔ یہ مرحلہ اس وقت تک دہرایا جائے گا جب تک تار خالی نہ ہو۔ یہاں ، ہم سٹرنگ 2 کو سٹرنگ 1 کے آخر میں سٹرنگ 1 سے جوڑ دیتے ہیں۔

کنکٹنیٹڈ سٹرنگ (سٹرنگ 1) آخر تک موصول ہوگی جب لوپ کے تمام تکرار کیے جائیں گے۔

مین () منسلک سٹرنگ S1 پرنٹ کرتا ہے۔

#شامل کریں

#شامل کریں

#BUF_SIZE 256 کی وضاحت کریں۔

/ * مندرجہ بالا تفصیل کے مطابق سٹرنگ کنکشن کو نافذ کرنے کا فنکشن */
باطلstrconcatenate(چار *سٹرنگ 1۔، چار*تار 2)
{
intمیں؛
intj= سٹرلین (سٹرنگ 1۔)؛
کے لیے(میں=؛تار[میں]؛میں++۔)
{
سٹرنگ 1۔[میں+j]=تار 2[میں]؛
}
سٹرنگ 1۔[میں+j]= ''؛
}
intمرکزی()
{
چارسٹرنگ 1۔[BUF_SIZE۔]،تار 2[BUF_SIZE۔]؛
پرنٹ ایف ('پہلا تار درج کریں:')؛ / * پہلی سٹرنگ کے لیے صارف کا پیغام */
بھاگ جاتا ہے (سٹرنگ 1۔،BUF_SIZE۔،stdin)؛ / * یوزر ان پٹ دوسری سٹرنگ ، سٹرنگ 1 * میں محفوظ
سٹرنگ 1۔[ سٹرلین (سٹرنگ 1۔)-] = ''؛

پرنٹ ایف ('دوسری سٹرنگ درج کریں:')؛ / * دوسری سٹرنگ کے لیے صارف کا پیغام */
بھاگ جاتا ہے (تار 2،BUF_SIZE۔،stdin)؛ / * یوزر ان پٹ دوسری سٹرنگ ، سٹرنگ 2 * میں محفوظ
تار 2[ سٹرلین (تار 2)-] = ''؛

strconcatenate(سٹرنگ 1۔،تار 2)؛ /* تقریب کو سٹرنگ 1 اور سٹرنگ 2 کے ساتھ دلائل کے طور پر کال کریں*/

پرنٹ ایف ('نتیجہ سٹرنگ =٪ s'n'،سٹرنگ 1۔)؛
واپسی ؛
}

پروگرام اور آؤٹ پٹ کے سنیپ شاٹس:

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

memcpy کا استعمال کرتے ہوئے سٹرنگ کنکشن۔

memcpy () فنکشن کا استعمال کرتے ہوئے ، سٹرنگ کو جوڑنا ایک سٹرنگ بفر سے دوسرے سٹرنگ بفر کے آخر تک لفظ کاپی کرکے کیا جاتا ہے جہاں ورڈ کا سائز 4 بائٹ ہوتا ہے اس بات پر غور کرتے ہوئے کہ ہم 32 بٹ مشین پر چل رہے ہیں جبکہ جب ہم سٹرنگ کنیکٹیشن کرتے ہیں strcat () فنکشن کا استعمال کرتے ہوئے سٹرنگ کنیکٹی نیشن کا استعمال کرتے ہوئے ، کنکٹینیشن بائٹ بائٹ کو ایک سٹرنگ بفر سے دوسرے سٹرنگ بفر میں کاپی کرکے کیا جاتا ہے۔

یہ طریقہ کار موثر ہے۔

memcpy استعمال کرتے وقت صرف غور کرنا ' 0' کا خیال رکھنا ہے۔

سی پروگرام memcpy کے ساتھ strcat حاصل کرنے کے لیے:

#شامل کریں

#شامل کریں

#BUF_SIZE 256 کی وضاحت کریں۔

باطل strcat_memcpy(چار *ایس 1۔، چار *S2)
{
intلمبائی 1،لمبائی 2؛
لمبائی 1= سٹرلین (ایس 1۔)؛
لمبائی 2= سٹرلین (S2)؛
memcpy (ایس 1۔+لمبائی 1،S2،لمبائی 2)؛
}
intمرکزی()
{

چارسٹرنگ 1۔[BUF_SIZE۔]،تار 2[BUF_SIZE۔]؛
پرنٹ ایف ('پہلا تار درج کریں:')؛ / * پہلی سٹرنگ کے لیے صارف کا پیغام */
بھاگ جاتا ہے (سٹرنگ 1۔،BUF_SIZE۔،stdin)؛ / * یوزر ان پٹ دوسری سٹرنگ ، سٹرنگ 1 * میں محفوظ
سٹرنگ 1۔[ سٹرلین (سٹرنگ 1۔)-] = ''؛

پرنٹ ایف ('دوسری سٹرنگ درج کریں:')؛ / * دوسری سٹرنگ کے لیے صارف کا پیغام */
بھاگ جاتا ہے (تار 2،BUF_SIZE۔،stdin)؛ / * یوزر ان پٹ دوسری سٹرنگ ، سٹرنگ 2 * میں محفوظ
تار 2[ سٹرلین (تار 2)-] = ''؛

strcat_memcpy(سٹرنگ 1۔،تار 2)؛ /* تقریب کو سٹرنگ 1 اور سٹرنگ 2 کے ساتھ دلائل کے طور پر کال کریں*/

پرنٹ ایف ('نتیجہ سٹرنگ =٪ s'n'،سٹرنگ 1۔)؛
واپسی ؛


}

پروگرام اور آؤٹ پٹ کے سنیپ شاٹس:

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

متن کی تفصیل خود بخود تیار ہو جاتی ہے۔

نتیجہ:

اس ساری بحث کے ساتھ ہم سٹرنگ کنکٹی نیشن کو سی میں ختم کر سکتے ہیں۔ ہم اہم اشیاء کو یاد کریں گے: اس کے دو طریقے ہیں ، ایک C معیار کے ساتھ اور دوسرا صارف کے وضع کردہ طریقے سے۔ صارف کی وضاحت مزید کئی اقسام کی ہوسکتی ہے ، اس بات پر منحصر ہے کہ صارف کس طرح سٹرنگ کنیکٹیشن کو نافذ کرنا چاہتا ہے۔