کیریکٹر سرنی اور سی سٹرنگ میں کیا فرق ہے؟


جواب 1:

چار کی ایک صف ایک ماب memoryہ میموری ہے جس کو 8 بٹ بائٹس کے طور پر تجزیہ کیا گیا ہے۔ تخلیق کے وقت یہ سائز میں طے شدہ ہے ، اور ہر بائٹ میں چار کو اسٹور کرنے کی ضمانت ہے۔

اس معاملے میں چار ایک 8 بٹ بائنری ہندسہ ہے جس میں 100000000 (0x00 ہیکس) سے 11111111 (0xFF ہیکس) ہو۔

چار سرنی [100]؛ / * 100 کرس ارے [0] کرنے کے لئے [99] * /

ایک سی سٹرنگ اسٹوریج کے لئے چار سرنی کا استعمال کرتی ہے۔ ایک سی سٹرنگ 0 سے لیکر سرے مائنس 1 لمبائی لمبائی تک ہوسکتی ہے۔

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

اسٹرنگ میں ایک لیبل (متغیر) ہوگا جو ایک کریکٹر پوائنٹر (چار *) ٹائپ ہے جو سرنی کا پتہ رکھتا ہے۔

اسٹرنگ میں ایک NULCHAR ہوگا ، ('\ 0'، 0x00 hex) تار کے آخری کردار کے بعد ، تار کو ختم کرے گا۔

چار s [10]؛ چار * t = & s؛ strncpy (t ، "012345678 \ 0" ، 10)

ماخذ کوڈ میں ڈبل حوالوں میں 'فورا string تار' لکھا جاتا ہے اور اس میں چاروں سرے کی بھرتیاں ہوتی ہیں جس کی وجہ سے اسے تخلیق کیا جاتا ہے اور اسے صرف خصوصی میموری پڑھنے کے لئے پڑا جاتا ہے ، اور اس کا اشارہ واپس کردیا جاتا ہے۔ یہ مرتب کردہ بذریعہ "نحو چینی" ہے اور اس طرح کے تاروں کو استعمال کرنا آسان بنا دیتا ہے۔ ایک NULCHAR خود بخود سرنی میں شامل ہوجاتا ہے تاکہ اسے اچھی طرح سے تشکیل دیا گیا تار بنایا جاسکے۔

چار * s = "ایک فوری تار"؛ پرنٹف ("٪ s \ n)، s)؛

سارے معیاری سی لائبریری سٹرنگ فنکشن چار * ایس کے بطور تاروں کو منتقل کرتے ہیں اور موجود ہونے پر '\ 0' پر انحصار کرتے ہیں۔

ایک "ہیک" جو کہ پوری طرح عالمی طور پر استعمال ہوتا ہے وہ یہ ہے کہ جب کسی صف کا لیبل اس تک پہنچ جاتا ہے جب سرنی کے پہلے عنصر کی طرف اشارہ کرکے ڈبل ہوجاتا ہے۔ اور اس کے برعکس۔

چار * x = "abcdefgh"؛ پرنٹف ("x چوتھا چار:٪ c \ n"، x [3])؛ x چوتھا چار: d / * چاروں سروں میں سٹرنگ ڈالیں * / چارٹر [100]؛ strncpy (str، "abcdefghijklmnop \ 0"، 18)؛ چار * a = str؛ چار * b = str + 7؛ پرنٹف ("٪ s \ n"، a)؛ abcdefghijklmnop printf ("٪ s \ n"، b)؛ hijklmnop

اس لچک کے باوجود ، ایک چار سرنی اور ایک سٹرنگ براہ راست ہم آہنگ نہیں ہیں۔

چار s [10]؛ s = "abcdefghi"؛ / * خرابی * / // خرابی: غیر منسلک اقسام کو جب 'چار [10]' ٹائپ کرنے کی تفویض کرتے ہیں تو وہ 'چار' * سے "abcdefghi" فوری طور پر تار ہوتا ہے اور اس کے لئے بنائے جانے والے صف میں "a" کی طرف اشارہ کرنے والے کو حل کرتا ہے۔ اس کو تفویض کرنا کام نہیں کرتا ہے ، کیوں کہ چاروں کی صفیں تفویض نہیں ہوتی ہیں۔

ارا reallyس واقعی سی میں فرسٹ کلاس قسم کی نہیں ہیں ان کی براہ راست کاپی نہیں کی جاسکتی ہے ، ان میں صفوں کی سطح کا کوئی عمل نہیں ہوتا ہے ، وغیرہ۔ سی میں اری کے ساتھ جو کچھ بھی کیا جاتا ہے وہ ایک یونٹ کے طور پر نہیں ہوتا ہے۔

چار s [10]؛ چار * x = "abcdefghi"؛ / * '\ 0' اختتام پر ہے * / strncpy (s، x، 10)؛ / * ہر چار کو کاپی کرنے کیلئے صفیں * /

جواب 2:

C پروگرامنگ لینگویج میں کریکٹر ارے ایک ڈیٹا ڈھانچہ ہوتا ہے: میموری میں بہت سے بائٹس جس میں آپ کریکٹر اسٹور کرسکتے ہیں۔ آپ ان خلیوں میں سے ہر ایک میں کوئی بھی کردار (یعنی 8 بٹس کے بائٹس ، قدر 0 سے 255 تک) ذخیرہ کرسکتے ہیں۔

سی طرز کی ایک تار (جیسا کہ میں آپ کے سوال میں "سی سٹرنگ" کی ترجمانی کرتا ہوں) حرفوں کی ایک "تار" کی نمائندگی کرنے کا ایک طریقہ ہے ، جس کی وضاحت سی زبان کے ذریعہ بغیر کسی بائٹ کے حروف کی ایک بڑی تعداد کی ہوتی ہے (قیمت 0) اس کی نمائندگی ان کرداروں کے ذریعہ کی گئی ہے جس کے بعد وہ ایک کالا بائٹ ہے ، اس طرح تار کی لمبائی کو الگ سے ذخیرہ کرنے کی ضرورت نہیں ہے۔ پاسکل طرز کے اس تار سے اس کا موازنہ کریں ، جہاں اس کی نمائندگی 16 بٹ کے بغیر دستخط شدہ عدد کے ذریعے کی جائے گی جس کے بعد معلومات کے اس بائٹ کی تعداد (تاکہ پاسکل تار کی لمبائی زیادہ سے زیادہ 65535 ہو)۔

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

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