1 00:00:00,000 --> 00:00:09,500 >> [موسیقی بجانا] 2 00:00:09,500 --> 00:00:12,350 >> ZAMYLA چان: یہ یاد SCARLETT تھا شمع دان کے ساتھ. 3 00:00:12,350 --> 00:00:13,560 Whodunit کے؟ 4 00:00:13,560 --> 00:00:15,030 ٹھیک ہے، ہم باہر تلاش کرنے کے لئے جا رہے ہیں. 5 00:00:15,030 --> 00:00:20,870 بورڈ کے کھیل سراگ میں، آپ کو شاید جسمانی ریڈ کی تصویر دی جائے. 6 00:00:20,870 --> 00:00:24,120 اور یہ کہ تصویر بہت سرخ اور ہے دببیدار، اور آپ کا کام ہے 7 00:00:24,120 --> 00:00:25,490 خفیہ پیغام کو ظاہر. 8 00:00:25,490 --> 00:00:29,740 اور عام طور پر آپ کو ایک ریڈ کے ساتھ فراہم کر رہے ہیں میگنفائنگ گلاس، یا ایک سرخ سکرین 9 00:00:29,740 --> 00:00:31,410 کہ خفیہ پیغام ظاہر. 10 00:00:31,410 --> 00:00:33,340 ٹھیک ہے، ہم اس کی نقل کرنے جا رہے ہیں. 11 00:00:33,340 --> 00:00:37,960 >> Whodunit میں، آپ کو ایک بٹ نقشہ تصویر دی کر رہے ہیں کہ، بہت دببیدار اور سرخ دکھائی دیتی ہے 12 00:00:37,960 --> 00:00:43,430 اور پھر Whodunit کے پروگرام کو چلانے کے ایک چھپی ہوئی پیغام ظاہر کرنے کے لئے. 13 00:00:43,430 --> 00:00:45,650 >> تو مراحل میں اس کو توڑنے کے ہیں. 14 00:00:45,650 --> 00:00:50,390 سب سے پہلے، آپ کو فائل کھولنے کے لئے چاہتے ہیں - آپ کو دیا گیا ہے کہ اشارہ. 15 00:00:50,390 --> 00:00:53,880 اور پھر بھی ایک تخلیق فیصلے بٹ نقشہ فائل. 16 00:00:53,880 --> 00:00:58,240 اس کے بعد آپ بٹ نقشہ کو اپ ڈیٹ کرنا چاہتے ہیں فیصلے outfile کے لئے معلومات کے ہیڈر. 17 00:00:58,240 --> 00:00:59,920 بعد میں اس پر مزید. 18 00:00:59,920 --> 00:01:04,319 اور پھر تم میں پڑھنے کے لئے جا رہے ہیں اشارہ، scanline، پکسل پکسل، 19 00:01:04,319 --> 00:01:07,320 کے طور پر پکسل رنگ کو تبدیل کرنے کے ضروری، اور تحریری طور پر 20 00:01:07,320 --> 00:01:08,960 فیصلے میں ان - 21 00:01:08,960 --> 00:01:12,000 میں پکسل پکسل فیصلے scanline. 22 00:01:12,000 --> 00:01:13,780 >> ہم کس طرح اس کے بارے میں جانا شروع کرتے ہیں؟ 23 00:01:13,780 --> 00:01:16,940 ٹھیک ہے، خوش قسمتی سے، ہم copy.c ہے تقسیم کے کوڈ میں. 24 00:01:16,940 --> 00:01:21,240 اور یہ ثابت کرنے کے لئے کی جا رہی ہے ہمارے لئے بہت مفید. 25 00:01:21,240 --> 00:01:29,700 Copy.c، ایک فائل کو کھولتا ہے اس میں لکھا ہے پھر infile کی ہیڈر، اور اپ ڈیٹس 26 00:01:29,700 --> 00:01:31,070 outfile کی ہیڈر. 27 00:01:31,070 --> 00:01:37,010 اور پھر اس میں ہر پکسل پڑھتا ہے پھر scanline، پکسل پکسل، اور 28 00:01:37,010 --> 00:01:42,390 outfile میں کہ پکسل لکھتے ہیں. 29 00:01:42,390 --> 00:01:45,020 >> تو، آپ کا پہلا قدم ہو سکتا ہے مندرجہ ذیل کو چلانے کے لئے ہو 30 00:01:45,020 --> 00:01:46,420 ٹرمینل میں کمانڈ - 31 00:01:46,420 --> 00:01:50,270 CP copy.c whodunit.c. 32 00:01:50,270 --> 00:01:55,320 اس کی ایک کاپی پیدا کر دے گا copy.c whodunit.c کا نام. 33 00:01:55,320 --> 00:01:58,320 تو کھولنے کے لئے ہمارا پہلا قدم فائل، ٹھیک ہے، ایک عین مطابق ہے 34 00:01:58,320 --> 00:02:00,070 copy.c. میں اس کی نقل 35 00:02:00,070 --> 00:02:03,360 تو میں اس کو دیکھنے کے لئے آپ کو چھوڑ دیں گے. 36 00:02:03,360 --> 00:02:07,860 >> ہم اس pset میں ساتھ ہے معاملہ کر رہے ہیں فائل I / O، بنیادی طور پر فائلوں کو لے، 37 00:02:07,860 --> 00:02:10,229 ، پڑھنا، لکھنا، ان میں ترمیم. 38 00:02:10,229 --> 00:02:12,650 کس طرح آپ سب سے پہلے ایک فائل کھول سکتا ہوں؟ 39 00:02:12,650 --> 00:02:16,800 ٹھیک ہے، آپ کو ایک فائل کا اعلان کرنے جا رہے ہیں پوائنٹر، اور پھر آپ کو فون 40 00:02:16,800 --> 00:02:18,670 تقریب fopen کی. 41 00:02:18,670 --> 00:02:23,150 راستہ، یا اس کے نام منتقل فائل، اور پھر آپ چاہتے ہیں کہ موڈ 42 00:02:23,150 --> 00:02:24,700 اندر اس فائل کو کھولنے کے لئے 43 00:02:24,700 --> 00:02:28,620 ایک R میں گزر کھل جائے گا پڑھنے کے لئے foo.bmp. 44 00:02:28,620 --> 00:02:35,670 جبکہ مغرب میں پاسنگ کے ساتھ fopen کی گا کھولیں bar.bmp، فائل لکھنے کے لئے اور 45 00:02:35,670 --> 00:02:37,020 اصل میں یہ ترمیم. 46 00:02:37,020 --> 00:02:41,970 >> تو اب ہم فائل کھولی ہے، ہماری اگلے قدم کے ہیڈر کی معلومات کو اپ ڈیٹ کرنے کے لئے ہے 47 00:02:41,970 --> 00:02:43,230 outfile کے لئے. 48 00:02:43,230 --> 00:02:44,610 ایک ہیڈر کی معلومات کیا ہے؟ 49 00:02:44,610 --> 00:02:48,160 ٹھیک ہے، سب سے پہلے ہم جاننے کی ضرورت ہے کیا ایک بٹ نقشہ ہے. 50 00:02:48,160 --> 00:02:51,000 ایک بٹ نقشہ صرف ایک سادہ ہے بائٹس کا انتظام. 51 00:02:51,000 --> 00:02:55,480 اور وہ اس فائل میں اعلان کر رہے ہیں کے ایک گروپ کے ساتھ یہاں، bmp.h، 52 00:02:55,480 --> 00:02:58,610 کیا ایک بٹ نقشہ کے بارے میں معلومات اصل سے باہر بنایا گیا ہے. 53 00:02:58,610 --> 00:03:05,730 لیکن کیا ہم واقعی پرواہ ہے بٹ نقشہ فائل ہیڈر، ٹھیک ہے یہاں، اور 54 00:03:05,730 --> 00:03:08,460 یہاں بٹ نقشہ معلومات ہیڈر،. 55 00:03:08,460 --> 00:03:13,170 ہیڈر ایک جوڑے کی پر مشتمل ہے بہت مفید ثابت ہوں گے کہ متغیر. 56 00:03:13,170 --> 00:03:18,400 ہے جو biSizeImage، ہے بائٹس میں تصویر کا مجموعی حجم. 57 00:03:18,400 --> 00:03:20,890 اور اس پکسلز اور بھرتی بھی شامل ہے. 58 00:03:20,890 --> 00:03:24,210 بھرتی بہت اہم ہے، لیکن ہم بعد میں اس سے ملے گی. 59 00:03:24,210 --> 00:03:30,000 >> BiWidth کی چوڑائی کی نمائندگی کرتا ہے پکسلز مائنس بھرتی میں تصویر. 60 00:03:30,000 --> 00:03:34,220 BiHeight بھی تو اونچائی ہے پکسلز میں تصویر کی. 61 00:03:34,220 --> 00:03:38,240 اور پھر BITMAPFILEHEADER اور جیساکہ میں نے ذکر BITMAPINFOHEADER، 62 00:03:38,240 --> 00:03:40,900 اس سے قبل ان کی نمائندگی کر رہے ہیں structs کے طور پر. 63 00:03:40,900 --> 00:03:45,410 تو، آپ کو فائل ہیڈر تک رسائی حاصل نہیں کر سکتے ہیں خود، لیکن اگر آپ کو حاصل کرنے کے لئے چاہتے ہیں کریں گے 64 00:03:45,410 --> 00:03:47,370 اندر ان متغیرات. 65 00:03:47,370 --> 00:03:48,170 >> ٹھیک ہے. 66 00:03:48,170 --> 00:03:50,600 تو ہم کس طرح ہیڈر کی معلومات کو اپ ڈیٹ کرتے ہیں؟ 67 00:03:50,600 --> 00:03:54,020 ٹھیک ہے، سب سے پہلے ہم کو دیکھنے کے لئے ہے ہم چاہے طرف سے کوئی بھی معلومات کو تبدیل کرنے کی ضرورت ہے 68 00:03:54,020 --> 00:03:58,480 پر infile، اشارہ، outfile، فیصلے. 69 00:03:58,480 --> 00:04:00,250 کچھ اس صورت میں تبدیل کر رہا ہے؟ 70 00:04:00,250 --> 00:04:04,320 ٹھیک ہے، اصل میں، ہم جا رہے ہیں نہیں ہے کیونکہ صرف رنگ تبدیل کرنے. 71 00:04:04,320 --> 00:04:07,550 ہم فائل تبدیل کرنے نہیں جا رہے ہیں سائز، تصویر کا سائز، چوڑائی، 72 00:04:07,550 --> 00:04:08,310 یا اونچائی. 73 00:04:08,310 --> 00:04:14,010 تو آپ کی طرف سے اب ٹھیک ہیں صرف ہر پکسل کاپی. 74 00:04:14,010 --> 00:04:14,840 >> ٹھیک ہے. 75 00:04:14,840 --> 00:04:20,720 تو اب ہم کس طرح اصل میں نظر آتے ہیں فائل سے ہر پکسل پڑھ سکتے ہیں. 76 00:04:20,720 --> 00:04:23,640 ایک اور فائل میں / O تقریب کھیل میں آئے گا - 77 00:04:23,640 --> 00:04:24,700 fread. 78 00:04:24,700 --> 00:04:28,440 یہ struct پر ایک پوائنٹر میں لیتا ہے اس بائٹس پر مشتمل گا کہ 79 00:04:28,440 --> 00:04:30,110 آپ پڑھ رہے ہیں. 80 00:04:30,110 --> 00:04:31,890 تو آپ کو اس میں پڑھ رہے ہیں. 81 00:04:31,890 --> 00:04:36,090 اور پھر آپ کو ہے جو، ایک سائز میں منتقل ہر عنصر کے سائز ہے کہ آپ 82 00:04:36,090 --> 00:04:37,360 پڑھنے کے لئے چاہتے ہیں. 83 00:04:37,360 --> 00:04:40,640 یہاں، کی تقریب کو sizeof ہاتھ میں آ جائے گا. 84 00:04:40,640 --> 00:04:45,570 تو پھر آپ کو، بڑی تعداد میں گزر جس کے عناصر کی تعداد کی نمائندگی کرتا ہے 85 00:04:45,570 --> 00:04:47,480 پڑھنے کے لئے سائز. 86 00:04:47,480 --> 00:04:51,180 اور پھر آخر میں، inptr، جو تم اس فائل پوائنٹر 87 00:04:51,180 --> 00:04:52,530 سے پڑھنے کے لئے جا رہا. 88 00:04:52,530 --> 00:04:58,650 لہذا ان عناصر کے تمام کے اندر ہیں inptr اور وہ اعداد و شمار کے لئے جا رہے ہیں. 89 00:04:58,650 --> 00:05:01,660 >> کی ایک چھوٹی سی مثال کے طور پر نظر آتے ہیں. 90 00:05:01,660 --> 00:05:07,590 میں اعداد و شمار کے دو کتوں میں پڑھنے کے لئے چاہتے ہیں، ٹھیک ہے، میں اس کے دو طریقوں میں سے ایک کر سکتے ہیں. 91 00:05:07,590 --> 00:05:15,250 میں یا تو سائز کے دو اشیاء میں پڑھ سکتے ہیں میری inptr سے کتے، یا میں پڑھ سکتے ہیں 92 00:05:15,250 --> 00:05:19,280 ایک میں دو کتوں کا سائز اعتراض. 93 00:05:19,280 --> 00:05:23,580 تو آپ کو دیکھ کر اس طرح پر منحصر ہے آپ کو، آپ کے سائز اور تعداد کا بندوبست ہے 94 00:05:23,580 --> 00:05:25,840 بائٹس کی ایک ہی تعداد میں پڑھ سکتے ہیں. 95 00:05:25,840 --> 00:05:28,720 96 00:05:28,720 --> 00:05:33,020 >> تو اب، کی تبدیل ہم نے کی ضرورت کے طور پر پکسل کا رنگ. 97 00:05:33,020 --> 00:05:37,320 آپ دوبارہ bmp.h میں نظر آتے ہیں، تو آپ نیچے دیئے گئے دیکھیں گے کہ 98 00:05:37,320 --> 00:05:42,920 RGBTRIPLEs، دوسرے struct کے کہاں ہیں وہ تین بائٹس پر مشتمل ہیں. 99 00:05:42,920 --> 00:05:49,220 ایک، rgbtBlue، rgbtGreen، اور rgbtRed. 100 00:05:49,220 --> 00:05:52,480 تو ان میں سے ہر ایک کی رقم کی نمائندگی کرتا ہے نیلے رنگ کے، سبز کی رقم، اور 101 00:05:52,480 --> 00:05:57,250 اس پکسل کے اندر ریڈ کی رقم، کہاں ہر رقم ایک کی طرف سے نمائندگی کی ہے 102 00:05:57,250 --> 00:05:58,670 شش اعشاری نمبر. 103 00:05:58,670 --> 00:06:04,370 >> تو FF0000 ایک نیلے رنگ ہو جائے گا، یہ نیلے رنگ سے جاتا ہے، کیونکہ 104 00:06:04,370 --> 00:06:05,850 سرخ، سبز. 105 00:06:05,850 --> 00:06:09,300 اور پھر تمام F وائٹ ہو جائے گا. 106 00:06:09,300 --> 00:06:13,440 کی smiley.bmp پر ایک نظر، لے جس آپ کو آپ کے تقسیم کے کوڈ میں ہے. 107 00:06:13,440 --> 00:06:15,690 آپ کو صرف ایک تصویر میں کھول تو ناظرین، اس کے بعد تمہیں 108 00:06:15,690 --> 00:06:17,080 صرف ایک سرخ سمائلی دیکھ. 109 00:06:17,080 --> 00:06:20,380 لیکن ہم کریں گے، میں ایک گہری ڈوبکی لے دیکھتے ہیں کہ ڈھانچہ 110 00:06:20,380 --> 00:06:22,340 کے یہ صرف پکسلز ہے. 111 00:06:22,340 --> 00:06:25,880 ہم سفید پکسلز ہے، اور پھر سرخ رنگ کے پکسلز. 112 00:06:25,880 --> 00:06:31,000 کے فورا تمام، سفید ffffff، اور میں آپ کے لئے میں رنگ ہے سرخ پکسلز 113 00:06:31,000 --> 00:06:35,440 یہاں، اور آپ کو وہ 0000ff ہیں دیکھ. 114 00:06:35,440 --> 00:06:39,760 زیرو نیلے، صفر سبز، اور مکمل سرخ. 115 00:06:39,760 --> 00:06:45,350 اور سمائلی آٹھ پکسلز وسیع ہے، ہم کسی بھی بھرتی نہیں ہے. 116 00:06:45,350 --> 00:06:47,360 ٹھیک ہے. 117 00:06:47,360 --> 00:06:53,310 >> میں مختلف اقدار کی وضاحت کرنے کے لئے تھے تو اگر ایک RGBTRIPLE اور میں چاہتا تھا 118 00:06:53,310 --> 00:06:58,350 یہ سبز بنانے کے، تو کیا مجھے کیا کرنا ہے میں نامی ایک RGBTRIPLE، کا اعلان کریں گے 119 00:06:58,350 --> 00:07:02,660 ٹرپل، اور پھر ہر تک رسائی حاصل کرنے کہ struct کے میں اندر بائٹ 120 00:07:02,660 --> 00:07:04,030 نقطہ آپریٹر کا استعمال کریں گے. 121 00:07:04,030 --> 00:07:08,430 تو triple.rgbtBlue، میں کر سکتا ہوں 0 کرنے کے لئے تفویض. 122 00:07:08,430 --> 00:07:13,460 گرین میں مکمل کرنے کے لئے تفویض کر سکتے ہیں - کسی بھی تعداد، واقعی، 0 اور FF کے درمیان. 123 00:07:13,460 --> 00:07:15,470 اور پھر سرخ رنگ، میں نے بھی 0 کہنے جا رہا ہوں. 124 00:07:15,470 --> 00:07:19,160 تو اس نے مجھے ایک سبز پکسل دیتا ہے. 125 00:07:19,160 --> 00:07:23,030 >> اگلا، میں چیک کرنے کے لئے کیا چاہتے ہیں کچھ کی قیمت؟ 126 00:07:23,030 --> 00:07:27,250 میں چیک کرتا ہے کہ کچھ کر سکتے ہیں ٹرپل کی rgbtBlue قیمت ہے کہ 127 00:07:27,250 --> 00:07:31,080 FF اور پھر پرنٹ، "میں محسوس کر رہا ہوں نیلے! "، نتیجے کے طور پر. 128 00:07:31,080 --> 00:07:35,640 اب، یہ ضروری مطلب یہ نہیں ہے پکسل صحیح، نیلے ہے؟ 129 00:07:35,640 --> 00:07:40,060 پکسل کی سبز اور سرخ اقدار کیونکہ بھی غیر 0 اقدار ہو سکتا ہے. 130 00:07:40,060 --> 00:07:43,470 اس کا مطلب یہ ہے کہ تمام، اور جو یہ ہے کے لئے جانچ پڑتال کی جاتی ہے 131 00:07:43,470 --> 00:07:45,610 ایک مکمل نیلے رنگ کے لئے. 132 00:07:45,610 --> 00:07:50,050 لیکن تمام پکسلز کو بھی جزوی طور پر کر سکتے ہیں اس طرح رنگ اقدار، 133 00:07:50,050 --> 00:07:52,180 یہاں اگلا مثال کے طور پر. 134 00:07:52,180 --> 00:07:55,400 >> یہ تھوڑا مشکل کو دیکھنے کے لئے ہے اس تصویر کو اب کیا ہے. 135 00:07:55,400 --> 00:08:00,320 یہ تھوڑا سا زیادہ کی طرح لگتا ہے آپ کو دیا جائے گا کہ clue.bmp. 136 00:08:00,320 --> 00:08:03,600 اب، جسمانی طور پر، اگر آپ اس کو حل کر سکتے ہیں، کی طرف سے، ریڈ کی ایک بہت ہے کیونکہ 137 00:08:03,600 --> 00:08:07,040 تصویر ایک سرخ سکرین کا انعقاد تو دیگر رنگ ظاہر ہو سکتے ہیں. 138 00:08:07,040 --> 00:08:10,968 تو ہم کس طرح سی کے ساتھ اس کی نقل ہے؟ 139 00:08:10,968 --> 00:08:15,640 ٹھیک ہے، ہم تمام سرخ کو دور کر سکتے ہیں تصویر سے مکمل طور پر. 140 00:08:15,640 --> 00:08:21,870 اور اس طرح ہم ہر مقرر تھا کہ ایسا کرنے کے لئے 0 پکسل سرخ قیمت. 141 00:08:21,870 --> 00:08:25,020 اور اس تصویر کا ایک چھوٹا سا نظر آئے گا ہم کوئی سرخ ہے جہاں اس طرح تھوڑا سا 142 00:08:25,020 --> 00:08:26,300 جو کچھ. 143 00:08:26,300 --> 00:08:29,390 >> ہم پوشیدہ پیغام دیکھ سکتے ہیں تھوڑا سا زیادہ واضح طور پر اب. 144 00:08:29,390 --> 00:08:31,730 یہ ایک جذباتیہ ہے. 145 00:08:31,730 --> 00:08:33,870 یا شاید ہم ایک اور طریقہ کا استعمال کر سکتے ہیں. 146 00:08:33,870 --> 00:08:36,480 شاید، ہم شناخت کر سکتے ہیں ریڈ پکسلز کے تمام - 147 00:08:36,480 --> 00:08:41,100 کہ، پکسلز کی سب کے ساتھ ہے 0 نیلے، 0، سبز، اور 0 سرخ - 148 00:08:41,100 --> 00:08:43,169 اور سفید کرنے کے لئے ان کو تبدیل. 149 00:08:43,169 --> 00:08:45,470 اور ہماری تصویر نظر ہو سکتا ہے کچھ اس طرح. 150 00:08:45,470 --> 00:08:48,250 دیکھنے کے لئے تھوڑا سا آسان. 151 00:08:48,250 --> 00:08:51,170 >> ننگا کرنے کے دیگر طریقے بہت ہیں خفیہ پیغام کے ساتھ ساتھ، 152 00:08:51,170 --> 00:08:53,730 رنگین ہیرا پھیری کے ساتھ نمٹنے. 153 00:08:53,730 --> 00:08:57,050 شاید آپ کو طریقوں میں سے ایک استعمال کر سکتے ہیں میں نے اوپر ذکر کیا ہے کہ. 154 00:08:57,050 --> 00:08:59,600 اور اس کے علاوہ، آپ چاہتے ہیں کر سکتے ہیں کچھ رنگ کو بڑھانے کے لئے 155 00:08:59,600 --> 00:09:02,620 اور ان لوگوں کو باہر لانے کے. 156 00:09:02,620 --> 00:09:06,190 >> تو اب ہم پکسل تبدیل کر دیا ہے کہ رنگ، اگلے ہم صرف ان کے لکھنے کی ضرورت 157 00:09:06,190 --> 00:09:08,500 پکسل کی طرف سے scanline میں، پکسل. 158 00:09:08,500 --> 00:09:11,860 اور ایک بار پھر، آپ کو واپس دیکھنا چاہتا ہوں گے آپ کاپی نہیں ہوا ہے تو، copy.c پر 159 00:09:11,860 --> 00:09:18,170 یہ پہلے سے ہی، اور fwrite پر نظر ڈیٹا لیتا ہے جس کی تقریب،، ایک پوائنٹر 160 00:09:18,170 --> 00:09:23,230 بائٹس پر مشتمل ہے کہ struct پر آپ کے سائز، سے پڑھ رہے ہیں 161 00:09:23,230 --> 00:09:26,610 اشیاء، اشیاء کی تعداد، اور پھر outptr - 162 00:09:26,610 --> 00:09:29,450 ان فائلوں کی منزل. 163 00:09:29,450 --> 00:09:34,010 >> آپ پکسلز میں لکھنے کے بعد، آپ گے بھی بھرتی میں لکھنے کے لئے ہے. 164 00:09:34,010 --> 00:09:34,970 بھرتی کیا ہے؟ 165 00:09:34,970 --> 00:09:38,670 ٹھیک ہے، ہر rgbt پکسل تین بائٹس طویل ہے. 166 00:09:38,670 --> 00:09:43,670 لیکن، ایک بٹ نقشہ تصویر کے لئے scanline چار بائٹس کی ایک سے زیادہ ہونا ضروری ہے. 167 00:09:43,670 --> 00:09:47,650 اور پکسلز کی تعداد نہیں ہے اگر ایک چار میں سے ایک سے زیادہ، تو ہم شامل کرنے کی ضرورت 168 00:09:47,650 --> 00:09:48,880 اس بھرتی. 169 00:09:48,880 --> 00:09:51,420 بھرتی صرف 0s کی طرف سے نمائندگی کی ہے. 170 00:09:51,420 --> 00:09:54,380 تو، ہم کس طرح لکھنے کے لئے، یا اس پڑھ سکتا ہوں؟ 171 00:09:54,380 --> 00:09:59,280 ٹھیک ہے، یہ پتہ چلتا ہے اگر آپ نہیں کر سکتے ہیں اصل fread بھرتی، لیکن آپ کر سکتے ہیں 172 00:09:59,280 --> 00:10:00,970 اس کا تخمینہ لگانا. 173 00:10:00,970 --> 00:10:04,400 >> اس صورت میں، اشارہ اور فیصلے اسی کی چوڑائی ہے، تو 174 00:10:04,400 --> 00:10:05,910 بھرتی ایک ہی ہے. 175 00:10:05,910 --> 00:10:09,370 اور بھرتی، آپ کو نظر آئے گا کے طور پر copy.c میں، شمار کیا جاتا ہے 176 00:10:09,370 --> 00:10:11,790 ذیل فارمولے کے ساتھ - 177 00:10:11,790 --> 00:10:16,690 bi.biWidth اوقات کو sizeof (RGBTRIPLE گے) کتنے بائٹس BMP ہمیں دے 178 00:10:16,690 --> 00:10:18,280 ہر صف میں ہے. 179 00:10:18,280 --> 00:10:21,890 وہاں سے، modulos اور subtractions کی 4 حساب کر سکتے ہیں کے ساتھ کس طرح 180 00:10:21,890 --> 00:10:25,610 کئی بائٹس شامل ہونا ضروری ہے تاکہ پر بائٹس کی ایک سے زیادہ 181 00:10:25,610 --> 00:10:27,250 ہر صف چار ہے. 182 00:10:27,250 --> 00:10:30,490 >> اب ہم کے لئے فارمولا ہے کہ ہم نے کی ضرورت کتنا بھرتی، اب 183 00:10:30,490 --> 00:10:31,610 ہم اس کو لکھ سکتے ہیں. 184 00:10:31,610 --> 00:10:34,080 اب، میں نے پہلے ذکر، بھرتی صرف 0s ہے. 185 00:10:34,080 --> 00:10:39,730 تو اس صورت میں، ہم صرف ڈال رہے ہیں میں اس معاملے میں 0 ایک چار،، ہماری 186 00:10:39,730 --> 00:10:41,710 outptr - ہمارے outfile. 187 00:10:41,710 --> 00:10:47,530 تو یہ صرف fputc ہو سکتا ہے 0، کوما outptr. 188 00:10:47,530 --> 00:10:52,400 >> تو، ہم میں پڑھ رہا تھا جبکہ ہماری فائل، فائل میں / O کا ٹریک رکھا ہے ہماری 189 00:10:52,400 --> 00:10:57,440 کچھ کے ساتھ ان فائلوں میں پوزیشن فائل پوزیشن کا مظہر کہا جاتا ہے. 190 00:10:57,440 --> 00:10:59,350 ایک کرسر کے طور پر اس کے بارے میں سوچو. 191 00:10:59,350 --> 00:11:03,550 بنیادی طور پر، یہ ہر وقت پیش قدمی ہم fread، لیکن ہم ہیں کہ 192 00:11:03,550 --> 00:11:05,671 بھی، اس پر کنٹرول. 193 00:11:05,671 --> 00:11:11,030 >> فائل پوزیشن کا مظہر منتقل کرنے کے لئے، آپ تقریب fseek استعمال کر سکتے ہیں. 194 00:11:11,030 --> 00:11:15,600 inptr فائل نمائندگی کرتا ہے جہاں آپ میں حاصل کرنے کی کوشش کر رہے ہیں کہ پوائنٹر، 195 00:11:15,600 --> 00:11:20,370 رقم بائٹس کی تعداد ہے کہ آپ سے پھر کرسر منتقل، اور کرنا چاہتے ہیں 196 00:11:20,370 --> 00:11:23,470 حوالہ نقطہ سے متعلق آپ کا کرسر ہے جہاں سے. 197 00:11:23,470 --> 00:11:26,770 آپ SEEK_CUR میں گزرتے ہیں، کہ موجودہ کی نمائندگی کرتا ہے 198 00:11:26,770 --> 00:11:28,100 فائل میں پوزیشن. 199 00:11:28,100 --> 00:11:31,020 یا آپ کو کچھ دوسرے پہلوؤں کو استعمال کر سکتے ہیں. 200 00:11:31,020 --> 00:11:35,400 تو، ہم جائیں fseek استعمال کرنے کے لئے چاہتے ہو سکتا ہے میں فائل کی بھرتی پر. 201 00:11:35,400 --> 00:11:39,410 آپ پھنس گئے ہیں اور اگر پھر،، وہاں ہے copy.c. میں اس کی ایک مثال 202 00:11:39,410 --> 00:11:43,260 >> تو اب ہم فائل کھولی ہے، اشارہ، اور فیصلے. 203 00:11:43,260 --> 00:11:46,450 ہم کے لئے ہیڈر کی معلومات کو اپ ڈیٹ کر دیا ہے ہمارے فیصلے، کیونکہ ہر 204 00:11:46,450 --> 00:11:48,730 بٹ نقشہ ایک ہیڈر کی ضرورت ہے. 205 00:11:48,730 --> 00:11:52,280 پھر ہم اشارہ کے میں پڑھا ہے scanline، پکسل پکسل، تبدیل کرنے 206 00:11:52,280 --> 00:11:55,210 ہر رنگ کے طور پر ضروری ہے، اور میں ان کو لکھنے 207 00:11:55,210 --> 00:11:57,340 فیصلے، پکسل پکسل. 208 00:11:57,340 --> 00:12:01,550 آپ کے فیصلے کو کھولنے کے بعد، آپ دیکھ سکتے ہیں جو مجرم، یا کیا راز 209 00:12:01,550 --> 00:12:02,850 پیغام ہے. 210 00:12:02,850 --> 00:12:05,550 میرا نام کیا Zamyla ہے، اور اس Whodunit کے تھا. 211 00:12:05,550 --> 00:12:12,864