1 00:00:00,000 --> 00:00:09,500 >> [მუსიკის დაკვრა] 2 00:00:09,500 --> 00:00:12,350 >> Zamyla CHAN: ეს იყო მის 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 ამ საბჭოს თამაში ნახავ, შეიძლება მიეცეს ფიზიკური წითელი image. 6 00:00:20,870 --> 00:00:24,120 და რომ სურათი არის ძალიან წითელი და spotty, და თქვენი საქმეა 7 00:00:24,120 --> 00:00:25,490 გამოვლენა ფარული გაგზავნა. 8 00:00:25,490 --> 00:00:29,740 და როგორც წესი, თქვენ უზრუნველყოფილი წითელი magnifying მინის, ან წითელი ეკრანზე 9 00:00:29,740 --> 00:00:31,410 ცხადყოფს, რომ ჩაფლული გაგზავნა. 10 00:00:31,410 --> 00:00:33,340 ისე, ჩვენ ვაპირებთ, რომ mimic რომ. 11 00:00:33,340 --> 00:00:37,960 >> In whodunit, თქვენ მოცემული bitmap გამოსახულება რომ ძალიან spotty და წითელი, 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 და შემდეგ ასევე უნდა შექმნას განაჩენი bitmap ფაილი. 16 00:00:53,880 --> 00:00:58,240 მაშინ გსურთ განაახლოთ bitmap header ინფორმაცია განაჩენს outfile. 17 00:00:58,240 --> 00:00:59,920 უფრო მოგვიანებით. 18 00:00:59,920 --> 00:01:04,319 და მაშინ თქვენ აპირებს წაიკითხა შევიდა ნახავ, scanline, pixel მიერ pixel, 19 00:01:04,319 --> 00:01:07,320 იცვლება pixel ფერები საჭიროების შემთხვევაში, და წერა 20 00:01:07,320 --> 00:01:08,960 იმ შევიდა განაჩენი - 21 00:01:08,960 --> 00:01:12,000 pixel მიერ pixel შევიდა განაჩენი 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 მიერ header, და შემდეგ ანახლებს 26 00:01:29,700 --> 00:01:31,070 outfile მიერ header. 27 00:01:31,070 --> 00:01:37,010 და მერე წერია, თითოეული პიქსელის scanline, pixel მიერ pixel, და შემდეგ 28 00:01:37,010 --> 00:01:42,390 წერს, რომ pixel შევიდა 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 ერთად გადადის w იქნება ღია bar.bmp, წერა ფაილი და 45 00:02:35,670 --> 00:02:37,020 რეალურად რედაქტირების იგი. 46 00:02:37,020 --> 00:02:41,970 >> ასე რომ, ახლა რომ ჩვენ გახსნა ფაილი, ჩვენი შემდეგი ნაბიჯი არის განაახლოს header ინფორმაცია 47 00:02:41,970 --> 00:02:43,230 ამისთვის outfile. 48 00:02:43,230 --> 00:02:44,610 რა არის header ინფორმაცია? 49 00:02:44,610 --> 00:02:48,160 ისე, პირველ რიგში, ჩვენ უნდა იცოდეს, რა bitmap არის. 50 00:02:48,160 --> 00:02:51,000 Bitmap არის უბრალოდ მარტივი მოწყობის ბაიტი. 51 00:02:51,000 --> 00:02:55,480 და ისინი გამოაცხადა ამ ფაილის აქ, bmp.h, ერთად bunch of 52 00:02:55,480 --> 00:02:58,610 ინფორმაცია რა bitmap რეალურად გააკეთა გარეთ. 53 00:02:58,610 --> 00:03:05,730 მაგრამ რაც ჩვენ ნამდვილად აინტერესებს არის Bitmap ფაილი header, სწორედ აქ, და 54 00:03:05,730 --> 00:03:08,460 bitmap კარგი თავით, მეტი აქ. 55 00:03:08,460 --> 00:03:13,170 Header შედგება რამდენიმე ცვლადები, რომელიც ადასტურებს, ძალიან სასარგებლო. 56 00:03:13,170 --> 00:03:18,400 არსებობს biSizeImage, რომელიც სულ ზომა იმიჯი bytes. 57 00:03:18,400 --> 00:03:20,890 და ამ მოიცავს პიქსელი და padding. 58 00:03:20,890 --> 00:03:24,210 Padding არის ძალიან მნიშვნელოვანი, მაგრამ ჩვენ კიდევ, რომ მოგვიანებით. 59 00:03:24,210 --> 00:03:30,000 >> BiWidth წარმოადგენს სიგანე იმიჯი pixels მინუს padding. 60 00:03:30,000 --> 00:03:34,220 BiHeight შემდეგ ასევე სიმაღლე იმიჯი pixels. 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 ასე რომ, თქვენ ვერ შედიხართ ფაილი header თავისთავად, მაგრამ თქვენ გსურთ მიიღოთ 64 00:03:45,410 --> 00:03:47,370 იმ ცვლადების შიგნით. 65 00:03:47,370 --> 00:03:48,170 >> OK. 66 00:03:48,170 --> 00:03:50,600 ასე როგორ უნდა განაახლოს header ინფორმაცია? 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 ასე რომ თქვენ ყველა უფლება ახლა მხოლოდ გადაწერა თითოეული pixel. 74 00:04:14,010 --> 00:04:14,840 >> OK. 75 00:04:14,840 --> 00:04:20,720 ახლა მოდით შევხედოთ, თუ როგორ ჩვენ რეალურად წაიკითხოს ყველა pixel ფაილი. 76 00:04:20,720 --> 00:04:23,640 სხვა ფაილის I / 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 შეგიძლიათ წაიკითხოთ იგივე რაოდენობის bytes. 95 00:05:25,840 --> 00:05:28,720 96 00:05:28,720 --> 00:05:33,020 >> ახლა, მოდით, შეცვალოს pixel ფერი გვჭირდება. 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 ოდენობით წითელი შიგნით ამ pixel, სადაც ყოველ წარმოდგენილია 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 უბრალოდ ვხედავ წითელი smiley. 109 00:06:17,080 --> 00:06:20,380 მაგრამ იმის ღრმა ჩაყვინთვის, ჩვენ ვხედავთ, რომ სტრუქტურა 110 00:06:20,380 --> 00:06:22,340 ეს მხოლოდ pixels. 111 00:06:22,340 --> 00:06:25,880 ჩვენ white pixels, და შემდეგ წითელი pixels. 112 00:06:25,880 --> 00:06:31,000 თეთრი, ffffff, და შემდეგ ყველა წითელი pixels მე ფერადი თქვენთვის 113 00:06:31,000 --> 00:06:35,440 აქ, და თქვენ ხედავთ, რომ ისინი 0000ff. 114 00:06:35,440 --> 00:06:39,760 Zero ლურჯი, ნულოვანი მწვანე, და სრულ წითელი. 115 00:06:39,760 --> 00:06:45,350 და რადგან smiley რვა pixels ფართო, ჩვენ არ გვაქვს რაიმე padding. 116 00:06:45,350 --> 00:06:47,360 ყველა უფლება. 117 00:06:47,360 --> 00:06:53,310 >> ასე რომ, თუ მე უნდა მივანიჭოთ სხვადასხვა ღირებულებების to RGBTRIPLE და მინდოდა 118 00:06:53,310 --> 00:06:58,350 რათა ის მწვანე, მაშინ რა მინდა გავაკეთოთ არის მინდა განვაცხადო, RGBTRIPLE, სახელად 119 00:06:58,350 --> 00:07:02,660 სამჯერ და შემდეგ შედიხართ ყველა byte ფარგლებში, რომ struct I 120 00:07:02,660 --> 00:07:04,030 გამოიყენებს dot ოპერატორი. 121 00:07:04,030 --> 00:07:08,430 ასე triple.rgbtBlue, შემიძლია დაავალოს, რომ 0. 122 00:07:08,430 --> 00:07:13,460 Green შემიძლია მივანიჭოთ მას სრული - ნებისმიერი ნომერი, ან, მართლაც, შორის 0 და ჯ. 123 00:07:13,460 --> 00:07:15,470 და მერე წითელი, მე ასევე ვაპირებ ვთქვა 0. 124 00:07:15,470 --> 00:07:19,160 ასე შემდეგ, რომ მაძლევს მწვანე pixel. 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 ახლა, ეს არ ნიშნავს იმას, რომ pixel არის ლურჯი, არა? 129 00:07:35,640 --> 00:07:40,060 იმის გამო, რომ pixel მწვანე და წითელი ღირებულებები შეიძლება ასევე აქვს არასამთავრობო 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 მაგრამ ყველა pixels შეიძლება ასევე აქვს არასრული, ფერი ღირებულებებს, როგორც ეს 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 ახლა, ფიზიკურად, თქვენ შეიძლება მოსაგვარებლად, იმიტომ, რომ იქ ბევრი წითელი, by 137 00:08:03,600 --> 00:08:07,040 ჩატარების წითელი ეკრანზე გამოსახულება ისე, რომ სხვა ფერები შეიძლება გამოჩნდება. 138 00:08:07,040 --> 00:08:10,968 ასე როგორ უნდა mimic ამ c? 139 00:08:10,968 --> 00:08:15,640 ასევე, ჩვენ შეიძლება ამოიღონ ყველა წითელი იმიჯი მთლიანად. 140 00:08:15,640 --> 00:08:21,870 და ასე უნდა გავაკეთოთ, რომ ჩვენ გვინდა მითითებული ყველა pixel წითელი მნიშვნელობა 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 ეს არის კიდევ ერთი smiley face. 145 00:08:31,730 --> 00:08:33,870 ან იქნებ ჩვენ შეგვიძლია გამოვიყენოთ სხვა მეთოდი. 146 00:08:33,870 --> 00:08:36,480 იქნებ, ჩვენ ვერ იდენტიფიცირება ყველა წითელი pixels - 147 00:08:36,480 --> 00:08:41,100 რომ არის, ყველა pixels ერთად 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 >> არსებობს უამრავი სხვა გზები, რათა uncover საიდუმლო გაგზავნა, ისევე, 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 და მოიტანს იმ out. 156 00:09:02,620 --> 00:09:06,190 >> ასე რომ, ახლა რომ ჩვენ შეიცვალა pixel ფერი, შემდეგ ჩვენ უბრალოდ უნდა დაწეროთ მათ 157 00:09:06,190 --> 00:09:08,500 იმ scanline, pixel მიერ pixel. 158 00:09:08,500 --> 00:09:11,860 და კიდევ ერთხელ, თქვენ გსურთ ვიხსენებთ to copy.c, თუ არ გადაწერა 159 00:09:11,860 --> 00:09:18,170 ეს უკვე, და შევხედოთ fwrite ფუნქცია, რომელიც იღებს მონაცემებს, მომცეთ 160 00:09:18,170 --> 00:09:23,230 რომ struct, რომელიც შეიცავს bytes რომ თქვენ კითხულობს, ზომა 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 >> შემდეგ წერთ იმ pixels, თქვენ ასევე უნდა ჩაიწეროს, padding. 164 00:09:34,010 --> 00:09:34,970 რა არის padding? 165 00:09:34,970 --> 00:09:38,670 ისე, ყველა rgbt pixel სამი ბაიტი ხანგრძლივი. 166 00:09:38,670 --> 00:09:43,670 მაგრამ, scanline განთავსების bitmap გამოსახულება უნდა იყოს მრავალჯერადი ოთხი bytes. 167 00:09:43,670 --> 00:09:47,650 და თუ ნომერი pixels არ არის მრავალჯერადი ოთხი, მაშინ ჩვენ უნდა დაამატოთ 168 00:09:47,650 --> 00:09:48,880 ამ padding. 169 00:09:48,880 --> 00:09:51,420 Padding მხოლოდ წარმოდგენილია 0S. 170 00:09:51,420 --> 00:09:54,380 ასე რომ, როგორ უნდა დაწეროთ, ან წაიკითხა ეს? 171 00:09:54,380 --> 00:09:59,280 ასევე, ირკვევა, რომ თქვენ ვერ რეალურად fread padding, მაგრამ შეგიძლიათ 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 padding არის იგივე. 175 00:10:05,910 --> 00:10:09,370 და padding, როგორც თქვენ ნახავთ in 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 აქვს ყველა row. 179 00:10:18,280 --> 00:10:21,890 იქიდან, modulos და subtractions 4 შეგვიძლია გამოვთვალოთ რამდენად 180 00:10:21,890 --> 00:10:25,610 ბევრი bytes უნდა დაემატოს ისე, რომ მრავალჯერადი ბაიტი on 181 00:10:25,610 --> 00:10:27,250 ყოველ ზედიზედ ოთხი. 182 00:10:27,250 --> 00:10:30,490 >> ახლა რომ ჩვენ გვაქვს ფორმულა რამდენად padding გვჭირდება, ახლა 183 00:10:30,490 --> 00:10:31,610 ჩვენ შეგვიძლია დაწერა. 184 00:10:31,610 --> 00:10:34,080 ახლა, მე აღვნიშნეთ, padding მხოლოდ 0S. 185 00:10:34,080 --> 00:10:39,730 ასე რომ, ამ შემთხვევაში, ჩვენ უბრალოდ აყენებს char, ამ შემთხვევაში 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 >> ასე რომ, ხოლო ჩვენ უკვე კითხულობს ჩვენს ფაილი, ფაილის I / 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 გამოტოვოთ მეტი padding, რომ ფაილი. 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 ჩვენ განახლებული header ინფორმაციის ჩვენი განაჩენი, რადგან ყველა 204 00:11:46,450 --> 00:11:48,730 bitmap სჭირდება header. 205 00:11:48,730 --> 00:11:52,280 ჩვენ შემდეგ წაიკითხა შევიდა ნახავ მიერ scanline, pixel მიერ pixel, იცვლება 206 00:11:52,280 --> 00:11:55,210 ყველა ფერი, როგორც საჭიროა, და წერა იმ შევიდა 207 00:11:55,210 --> 00:11:57,340 განაჩენი, pixel მიერ pixel. 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