[موسیقی بجانا] ZAMYLA چان: وصولی کے سے نمٹنے کے ہیں. بازیافت شاید میرا پسندیدہ pset ہے، اور بنیادی طور پر مجھے لگتا ہے کہ اس کی وجہ واقعی، واقعی ڈاؤن لوڈ، اتارنا. بنیادی طور پر، آپ کو ایک میموری دی کر رہے ہیں کارڈ فائل ہے جس میں تصاویر کو خارج کر دیا گیا ہے. لیکن کیا اگر آپ جا رہے ہیں ایسا ان سب کی وصولی ہے. ٹھیک ہے. تو یہ ہو سکتا ہے کہ واقعی دلچسپ ہے، لیکن ایک تم کر رہے ہیں، تھوڑا سا دھمکی ایک خالی سی فائل اور دی آپ کو اس کے اندر بھرنے کے لئے ہے ٹھیک ہے، تو اس کو توڑ دو انتظام حصوں میں. آپ کو کھولنے کے لئے چاہتے ہیں کریں گے میموری کارڈ فائل. یہ کافی آسان لگتا ہے. اس کے بعد، شروع تلاش ایک JPG تصویر کی. یہ میموری پر تمام فائلوں کارڈ JPGs جا رہے ہیں. اس کے بعد، ایک بار جب آپ، آغاز تلاش آپ کو ایک نیا jpg کھولنے کے لئے جا رہے ہیں ، کی طرح، ایک JPG بنانے کے، اور 512 لکھنا ہے ایک نیا jpg ہے جب تک ایک وقت میں بائٹ پایا، اور پروگرام ختم، ایک بار آپ کو فائل کے آخر میں پتہ لگانے کے. تو پہلا قدم سب سے پہلے کھولنے کے لئے ہے میموری کارڈ فائل. لیکن اگر آپ پہلے سے ہی یہ جانتے ہیں، اور وہاں ہے جا رہا ہے کہ ایک فائل میں / O تقریب بہت مفید ثابت. ٹھیک ہے. تو JPGs کیا ہیں؟ ہم شروع کرنے کے لئے اس کی ضرورت ہے. ٹھیک ہے، JPGs، صرف تھوڑا سا کے نقشے کی طرح، بائٹس کی صرف انداز ہیں. خوش قسمتی سے، ہر JPG یا تو ساتھ شروع ہوتا ہے 0xff، 0xd8، 0xff، 0xe0، ایک ترتیب کی بائٹس، یا کسی دوسرے بائٹس کی ترتیب. تو ان چار بائٹس کی نشاندہی ایک JPG کے آغاز. ان دونوں کے مجموعے کے علاوہ کوئی نہیں چار بائٹس کی. اور خوش قسمتی سے ہمارے لئے، ایک اور حقیقت یہ ہے کہ ہم کا فائدہ لے سکتے ہے کہ ہر JPG کی طرف کی طرف سے سائڈ محفوظ کیا جاتا ہے میموری کارڈ پر. میں نے ایک کی ساخت کی نمائندگی کی ہے Schematically، لیبل اس پر میموری کارڈ یہاں سلائڈ. یہاں، ہر چوک، ہر مستطیل، 512 بائٹس کی نمائندگی کرتا ہے، اور یہ شروع ہوتا ہے ہم ایسا نہیں کرتے کہ اس میں ایک سرمئی کے ساتھ واقعی ایک JPG ہے. لیکن پھر ہم آخر مارا ایک ستارہ کے ساتھ ایک بلاک. اسکا مطلب ہے کہ پہلے چار بائٹس باہر ان میں سے 512 ان دونوں میں سے ایک ہیں ایک JPG کے انداز سے شروع ہونے والے. اور ہم ایک بار پھر وہاں سے چلے جاؤ، اور ایک JPG اگلے ایک سے شروع ہوتا ہے، ختم ہو جاتی ہے. ہم نے کبھی کسی بھی زیادہ کی ضرورت نہیں ہے درمیان میں بھوری رنگ کی جگہ. لیکن کس طرح ہم اصل میں اس کو پڑھنے کے، اور ہم کر سکتے ہیں تاکہ 512 بائٹس پڑھ مقابلے پہلی جگہ؟ ٹھیک ہے،، واپس fread جانے جس شامل ہو گی کہ struct میں لیتا ہے آپ پڑھ رہے ہیں بائٹس. تو آپ کو ڈال کرنے کے لئے جا رہے ہیں وہاں ان - سائز، تعداد، اور پھر inpointer آپ کی طرف سے پڑھ رہے ہیں کہ. اب ہم ایک وقت میں 512 کو پڑھنے کے لئے چاہتے ہیں، اور ہم ایک بفر میں اس کی دکان کے لئے چاہتے ہیں، میں نے اسے فون کرنے جا رہا ہوں. بنیادی طور پر، ہم نے منعقد کرنے کے لئے جا رہے ہیں ان 512 بائٹس پر اور کیا اس کے ساتھ چیزیں، ٹھیک ہے؟ ہم یا تو سب سے پہلے آپس میں موازنہ کرنے جا رہے ہیں چار بائٹس، یا ہم جا رہے ہیں ٹھیک ہے، اس میں پڑھا ہے؟ تو پھر ڈیٹا پوائنٹر تو کرے گا آپ بفر کے طور پر کام، اور inpointer، ٹھیک ہے، یہ صرف جا رہا ہے آپ کی میموری کارڈ ہو. ہماری میموری کارڈ یوجنابدق پر واپس جائیں. ہم ایک وقت میں 512 بائٹس پڑھنے کے لئے جا رہے ہیں، ہر 512 بائٹ بلاک ذخیرہ کرنے ایک بفر میں، انعقاد ان پر جب تک ہم جانتے،، ان 512 بائٹس بفر بالکل وہی جو ان سے کیا. تو شروع میں کچھ بھی نہیں ہے، تو ہم، بفر پڑھ اس کا موازنہ، اور گے ہم اس کے ساتھ کچھ کرنے کی ضرورت نہیں کرے گا. اور اس کے بعد، ہم آخر میں ایک ستارہ مارا ہم نے اس کے معنی، بلاک ہماری پہلی JPG پایا. تو بفر اب منعقد کہ JPG سے بائٹس. وہ کر رہے ہیں 512 بائٹس، کیونکہ اگلی بار نہیں ایک ستارہ بلاک، بھی ہیں کہ JPG کا حصہ. اور JPGs وہاں سے مسلسل ہیں پر ہم اگلے JPG مارا جب تک، میں. اور پھر بفر تو ڈگری حاصل کی 512 کہ JPG لئے بائٹس، اور تو، اور وغیرہ. ٹھیک ہے. آپ سب سے پہلے ستارے کا نشان لگا مارا تو ایک بار بلاک، پہلی JPG، کس طرح تم کرتے ہو اصل میں، ٹھیک ہے، یہ کھلی ہے؟ ایک نیا jpg بنا دو. ایک JPG لئے اسم مسل جا رہے ہیں کی شکل میں ہو، تعداد، تعداد، number.jpg، کہ میں وہ میں نام کر رہے ہیں انہوں نے محسوس کر رہے ہیں جس میں حکم، 0 سے شروع. تو سب سے پہلے JPG ہے کہ آپ تلاش 000.jpg جائے گا. تو، شاید ایک اچھا خیال ہے ٹریک رکھنے کے لئے تم اتنی دور ملا ہے کتنے JPGs. تو اس فائل کا نام ہے. لیکن آپ کس طرح کہ اصل میں کر سکتا ہوں؟ ٹھیک ہے، ہم استعمال کرنے کے لئے جا رہے ہیں تقریب sprintf کہا جاتا ہے. printf کے لئے اسی طرح ایک تھوڑا سا، جہاں آپ، ڈور کے لئے جگہ دار استعمال کر سکتے ہیں اس صورت میں سوائے، sprintf پرنٹ گا موجودہ میں فائل باہر ڈائریکٹری، نہ ٹرمینل میں. ٹھیک ہے. تو یہاں ہم نے اس عنوان کو دیکھتے ہیں کہ، کہ ذخیرہ ایک چار صف نتیجے میں سٹرنگ، اور ہم میں منتقل ایک کے ساتھ اصل سٹرنگ کا عنوان پلیس ہولڈر، ہم ہے جیسے printf کے ساتھ کیا سیکھا. لیکن میں یہاں ہے کہ اس کوڈ 2.jpg، نہیں 002.jpg دے گا. تو میں باہر تلاش کرنے کے لئے آپ کو چھوڑ دیں گے کے لئے کس طرح کرنے کے لئے کرنے کے لئے پلیس ہولڈر پر نظر ثانی صحیح نام. ٹھیک ہے. تو ایک بار جب آپ آپ کر سکتے ہیں تو sprintf'd ہے اس میں موجود ہے، کیونکہ، اس فائل کو کھولنے کے fopen کی کے ساتھ آپ کی ڈائریکٹری،، کا استعمال کرتے ہوئے عنوان، اور آپ چاہتے ہیں تو جو کچھ بھی موڈ اندر اس فائل کو کھولنے کے لئے تو اب ہم ایک نئے JPG فائل کھولی ہے، اب ہم ایک میں 512 بائٹس لکھ سکتے ہیں ایک نیا jpg پایا جاتا ہے جب تک وقت،. تو ایک اور نظر ڈالیں fwrite کے نحو میں. میں نے اس سلائڈ ایک ظاہر کر رہا ہوں معلوم ہے کہ بہت، لیکن میں صرف اس بات کو یقینی بنانا چاہتے ہیں تم لوگ، بہت الجھن میں نہیں ہے میں نے اس کے لئے بہت آسان ہے کو معلوم ہے کہ پہلا اور آخری کو ملا دلیل، خاص طور پر. لیکن آپ سے لکھ رہے ہیں یاد رکھیں کہ باہر فائل تصاویر میں آپ کے بفر. اب آپ کو معلوم ہے کہ کس طرح لکھنا 512 آپ کو ہے کہ آپ JPG فائل میں شراکت پیدا، کے ساتھ ساتھ، ہم نے اس کو روکنے کے لئے چاہتے ہیں، ہم آخر میں پہنچ چکے ہیں کے عمل میں ایک بار ہماری کارڈ، کیونکہ وہاں نہیں ہو گا پایا جا کرنے کے لئے کوئی زیادہ سے زیادہ تصاویر. تو fread واپس جانے دو ایک بار پھر، میں وعدہ کرتا ہوں. fread سائز کے کتنے اشیاء واپس، سائز، کامیابی کے لئے تیار تھے. مثالی طور پر، یہ ہونے جا رہا ہے جو کچھ بھی آپ درست نمبر کے لئے میں منتقل؟ آپ کا نمبر کو پڑھنے کے لئے کی کوشش کر رہے ہیں سائز، سائز کے عناصر کے. لیکن fread کہ پڑھنے کے قابل نہیں ہے تو عناصر کی تعداد، پھر اس کے واپس آ جائیں گے اس کامیابی کے ساتھ پڑھا جو کچھ بھی نمبر. اب، نوٹ کرنے کے لئے ایک اہم بات یہ ہے کہ آپ کو I / O دوسری فائل استعمال کرتے ہیں تو fgetc کی طرح کام، یہ بھی واپس آ جائیں گے اس کامیابی کے ساتھ پڑھا کس طرح بہت سے اشیاء. اس تقریب کے بارے میں مفید ہے کہ آپ کو ایک کے اندر کام کرتا ہے استعمال کرتے ہیں تو حالت، جبکہ خود عملدرآمد کریں گے ہے جس میں شرط یہ ہے کہ، کا تعین صرف واقعی مفید. تو آپ کو یہ شرائط ہیں تو کہتے ہیں، اگر fread بفر ہے، sizeof کتے، 2، پوائنٹر،، 1 برابر برابر ہے مجھے پڑھنے کے لئے چاہتے ہیں کا مطلب ہے کہ وقت میں 2 کتوں. لیکن fread کے طور پر کی بجائے 2 1 آنے کی صورت میں امید کی جاتی ہے، کہ 2 ہیں کا مطلب ہے کہ کتوں میری فائل میں چھوڑ دیا، بلکہ 1. لیکن یہ 2 واپس، تو میں اب بھی ہے میری بفر کے اندر ان 2 کتوں. تو اب ہے کہ آپ کس طرح کا احساس دیتا ہے فائل کے آخر کے لئے چیک کریں، لیکن اب منطق کے ذریعے جانے. ہم کس طرح اصل میں تمام ٹکڑا ہے ایک ساتھ مل کر ان عناصر میں سے؟ ہم ہماری پہلی JPG مارا ایک بار، کے بعد سے ہم JPGs محفوظ کیا جاتا ہے کو معلوم ہے کہ contiguously، ہم جب تک تحریری طور پر کیا جائے گا ہم کارڈ فائل کے آخر تک پہنچنے کے. لیکن ہم نے لکھنے کے لئے نہیں کرنا چاہتا کچھ بھی اس وقت تک. تو یہ ہم پر ہیں کہ نہ صرف، فرق پڑتا ہے ایک نیا jpg کے آغاز، لیکن چاہے ہم نے پہلے ہی ایک JPG یا نہیں ملا ہے. یہ ایک نیا jpg کے آغاز ہے، تو ہم کریں گے ہماری موجودہ jpg وال فائل کی تو بند کرنا چاہتے ہیں ہم ایک کھلی، اور کھلی ہے میں لکھنے کے لئے ایک نیا. یہ نیا jpg کے آغاز نہیں ہے، تاہم، ہم ایک ہی jpg وال فائل رکھیں گے کھولنے اور اس میں لکھنا. ہم جو بھی میں ہمارے بفر لکھیں گے ہم کھلے ہیں jpg وال فائل کی، فراہم کی ہے کہ کورس کے ہم، ایک کھلا ہوا ہے. ہم ہماری پہلی JPG نہیں ملا ہے تو ابھی تک، ہم کچھ نہیں لکھتے. اور اس عمل تم تک جاری کارڈ فائل کے آخر تک پہنچنے کے. اور آخر میں، آپ کو بنانا چاہتے ہیں کریں گے اگر آپ کو کسی میں fclose یقین ہے کہ آپ fopened ہے کہ فائلوں. آپ کے ساتھ آرام دہ اور پرسکون رہے ہیں ایک بار تصورات، کچھ پر ایک نظر ڈالیں میں یہاں شامل کر دیا ہے جس pseudocode،. سب سے پہلے، آپ کارڈ فائل کو کھولنے کے لئے چاہتے ہیں، اور پھر مندرجہ ذیل عمل کو دہرائیں آپ پہنچ چکے ہیں جب تک کارڈ کے اختتام. آپ 512 بائٹس پڑھنے کے لئے چاہتے ہیں، ایک بفر میں. کہ بفر کا استعمال کرتے ہوئے، آپ کو چیک کرنے کے لئے چاہتے ہیں کریں گے آپ کو ایک کے آغاز میں ہیں چاہے نیا jpg یا نہیں. اور اس سوال کا جواب دے گا آپ کی فائل کے انتظام کو متاثر - جس سے آپ کو کھولنے فائلوں، جس میں جو آپ کو بند کرتے ہیں. اس کے بعد، آپ پہلے سے ہی ایک JPG مل گیا ہے؟ تم کس طرح رکھے ہوئے ہیں اس کے ٹریک؟ اس کے بعد، اس پر منحصر ہے، آپ یا تو موجودہ JPG میں لکھنے ہے کہ آپ یہ بالکل لکھنے کھولیں، یا نہیں ہے، ابھی تک آپ ایک JPG نہیں ملا ہے کیونکہ. آخر میں، ایک بار جب آپ اختتام کے تک پہنچ چکے ہیں فائل، آپ کو کسی بھی بند کرنا چاہتے ہیں کریں گے آپ کو کھلی ہے کہ فائلوں کی باقی. ہم یہاں صاف کرنا چاہتے ہیں. اور اس کے ساتھ، آپ کے تمام برآمد کیا ہے کہ میموری سے لاپتہ فائلوں ایک خوبصورت حیرت انگیز کارنامہ ہے جس میں کارڈ،. تو واپس پر اپنے آپ کو عوامی تحریک. لیکن، ایک اور عنصر ہے مقابلہ ہے جو pset کے،. آپ تلاش کر لیں گے کہ تصاویر کے تمام آپ کو برآمد کیا ہے کہ اصل میں ہیں CS50 عملے کی تصاویر. تو آپ کو کیمپس میں یا کہیں ہیں تو کے قریب، تو آپ کے ساتھ تصاویر لے سکتے ہیں عملے، اور ہے کہ سیکشن عملے کے ارکان کے ساتھ سب سے زیادہ تصاویر ان کی برآمد فائلوں سے مرضی ایک خوفناک انعام حاصل. اس کے ساتھ، تو آپ کو ختم کر دیا pset کی وصولی. میرا نام کیا Zamyla ہے، اور اس CS50 ہے.