1 00:00:00,000 --> 00:00:02,700 [Powered by Google Translate] [Walkthrough - Set Problem 4] 2 00:00:02,700 --> 00:00:05,000 [Zamyla Chan - Università ta 'Harvard] 3 00:00:05,000 --> 00:00:07,340 [Dan huwa CS50. - CS50.TV] 4 00:00:08,210 --> 00:00:11,670 Kull dritt. Hello, kulħadd, u jilqgħu għall Walkthrough 4. 5 00:00:11,670 --> 00:00:14,270 >> Illum pset tagħna huwa forensika. 6 00:00:14,270 --> 00:00:18,080 Forensika huwa pset verament gost li jinvolvi li jittrattaw ma 'fajls Bitmap 7 00:00:18,080 --> 00:00:21,550 biex jiskopru min ikkommetta reat. 8 00:00:21,550 --> 00:00:24,200 Imbagħad aħna qed tmur biex resize xi fajls Bitmap, 9 00:00:24,200 --> 00:00:27,780 allura aħna wkoll qed tmur biex jittrattaw ma 'parti verament gost imsejħa Tirkupra, 10 00:00:27,780 --> 00:00:31,160 li aħna qed bażikament mogħtija kard ta 'memorja 11 00:00:31,160 --> 00:00:34,350 li fih xi ħadd aċċidentalment mħassra kollha tal-fajls tagħhom, 12 00:00:34,350 --> 00:00:38,860 u aħna qed tintalab biex jirkupraw dawk il-fajls. 13 00:00:38,860 --> 00:00:42,910 >> Iżda l-ewwel, qabel ma nikbru fil-pset, I really biss jixtiequ jifirħu kulħadd. 14 00:00:42,910 --> 00:00:45,230 Aħna qed madwar fil-punt tan-nofs ta 'dan il-kors. 15 00:00:45,230 --> 00:00:50,070 Quiz 0 hija warajna, u aħna qed fil pset4, hekk essenzjalment, aħna qed f'nofsu. 16 00:00:50,070 --> 00:00:55,490 Imxejna ħafna 'l quddiem jekk inti tħares lura lejn psets tiegħek, pset0 u pset1, 17 00:00:55,490 --> 00:00:57,300 hekk nifraħ lilek innifsek dwar dan, 18 00:00:57,300 --> 00:01:00,760 u aħna qed tmur biex jsibu rwieħhom xi għalf verament gost. 19 00:01:00,760 --> 00:01:07,070 >> Allura toolbox tagħna għal dan pset, għal darb'oħra, minflok running sudo yum-y aġġornament, 20 00:01:07,070 --> 00:01:13,890 aħna kapaċi li jiddekorri biss update50 jekk int fuq verżjoni 17.3 u aktar ta 'l-appliance. 21 00:01:13,890 --> 00:01:17,380 Sabiex ikun żgur li run update50 - huwa aktar faċli ħafna, xi karattri ftit inqas - 22 00:01:17,380 --> 00:01:20,640 tagħmel żgur li int fil-aħħar verżjoni ta 'l-appliance. 23 00:01:20,640 --> 00:01:25,410 Speċjalment huwa importanti li update50 meta aħna jibdew jużaw CS50 Iċċekkja. 24 00:01:25,410 --> 00:01:28,700 Sabiex tagħmel ċert li inti tagħmel dan. 25 00:01:28,700 --> 00:01:30,760 >> Għall kollha mit-taqsimiet ta 'dan pset, 26 00:01:30,760 --> 00:01:34,350 aħna qed tmur biex tkun jittrattaw inputs u l-outputs fajl, fajl I / O. 27 00:01:34,350 --> 00:01:38,140 Aħna ser jkunu għaddejjin fuq lott ta 'programmi li jittrattaw ma' arrays 28 00:01:38,140 --> 00:01:40,350 tipponta lejn fajls u affarijiet bħal dik, 29 00:01:40,350 --> 00:01:43,050 hekk aħna tixtieq li tagħmel ċert li aħna qed verament familjari u komdu 30 00:01:43,050 --> 00:01:47,990 jittrattaw mal-mod kif l-input u output fis-fajls. 31 00:01:47,990 --> 00:01:52,080 >> Fl-kodiċi ta 'distribuzzjoni għal dan pset il-fajl huwa msejjaħ copy.c, 32 00:01:52,080 --> 00:01:55,280 u dan huwa dak li aħna qed tmur biex issib se tkun verament utli għalina 33 00:01:55,280 --> 00:02:00,340 għaliex aħna qed tmur biex jispiċċaw fil-fatt jikkopja l-fajl copy.c 34 00:02:00,340 --> 00:02:05,350 u biss jbiddlu dan ftit li tkun tista 'tikseb l-ewwel 2 partijiet ta' l-sett problema. 35 00:02:05,350 --> 00:02:09,030 >> U hekk imbagħad kif semmejt qabel, aħna qed jittrattaw ma bitmaps kif ukoll JPEGs. 36 00:02:09,030 --> 00:02:13,170 Allura verament jifhmu l-istruttura ta 'kif dawn il-fajls huma organizzati, 37 00:02:13,170 --> 00:02:16,170 kif nistgħu verament jittraduċu l-0s u 1s fis structs 38 00:02:16,170 --> 00:02:19,040 u affarijiet li nistgħu ngħidu jifhmu u jinterpretaw u jeditjaw, 39 00:02:19,040 --> 00:02:21,000 li se tkun verament importanti, 40 00:02:21,000 --> 00:02:25,970 hekk nidħlu JPEG u fajls Bitmap u jifhmu l-istruttura ta 'dawn. 41 00:02:25,970 --> 00:02:30,780 >> Pset4, bħas-soltu, jibda bil-taqsima ta 'mistoqsijiet. 42 00:02:30,780 --> 00:02:36,600 Dawk se tittratta mal-fajl I / O u inti tikseb mdorri dan. 43 00:02:36,600 --> 00:02:42,520 Imbagħad parti 1 huwa whodunit, fejn int tingħata fajl Bitmap 44 00:02:42,520 --> 00:02:45,630 li tidher it-tip ta 'prodotti simili tikek ħomor kollha. 45 00:02:45,630 --> 00:02:52,180 U allura bażikament dak li aħna qed tmur biex tagħmel huwa li tieħu dan il-fajl u biss tbiddilha ftit 46 00:02:52,180 --> 00:02:54,010 fis-verżjoni li nistgħu taqra. 47 00:02:54,010 --> 00:02:56,000 Essenzjalment, ladarba aħna finitura, aħna ser ikollhom l-istess fajl, 48 00:02:56,000 --> 00:03:02,630 ħlief aħna ser tkun tista 'tara l-messaġġ moħbija moħbija minn dawk kollha tikek ħomor. 49 00:03:02,630 --> 00:03:07,310 Imbagħad Resize huwa programm li, minħabba fajl 50 00:03:07,310 --> 00:03:11,490 u mbagħad jingħata l-isem tal-fajl li outputs u mbagħad mogħtija numru kif ukoll, 51 00:03:11,490 --> 00:03:16,850 fil-fatt se resize li Bitmap minn dak il-valur sħiħ. 52 00:03:16,850 --> 00:03:19,240 Imbagħad fl-aħħar, aħna għandna l-pset jirkupraw. 53 00:03:19,240 --> 00:03:24,160 Aħna jingħataw karta tal-memorja u mbagħad ikollhom jirkupraw kollha ta 'l-ritratti 54 00:03:24,160 --> 00:03:25,920 li ġew aċċidentalment mħassra, 55 00:03:25,920 --> 00:03:31,420 iżda, kif aħna ser jitgħallmu, mhux attwalment mħassra u jitneħħew mill-fajl; 56 00:03:31,420 --> 00:03:38,470 aħna biss tip ta 'mitluf meta kienu fil-fajl, iżda aħna qed tmur biex tirkupra dak. 57 00:03:38,470 --> 00:03:44,950 >> Great. Allura jmorru fil-fajl I / O speċifikament, dawn huma lista sħiħa ta 'funzjonijiet li inti ser tkun qed tuża. 58 00:03:44,950 --> 00:03:49,840 You ħadthom diġà raw xi ftit l-baŜi ta fopen, fread, u fwrite, 59 00:03:49,840 --> 00:03:54,350 imma aħna qed tmur biex tħares aktar fil xi fajl I / O funzjonijiet bħall fputc, 60 00:03:54,350 --> 00:03:56,930 fejn inti biss jiktbu karattru wieħed fi żmien, 61 00:03:56,930 --> 00:04:02,000 li fseek, fejn inti tip ta 'timxi l-indikatur tal-pożizzjoni fajl quddiem u lura, 62 00:04:02,000 --> 00:04:05,770 u mbagħad xi oħrajn. Iżda aħna ser imorru fis li ftit aktar tard matul il pset. 63 00:04:08,050 --> 00:04:13,100 >> Allura l-ewwel, biss li tikseb fis fajl I / O qabel immorru fil-pset, 64 00:04:13,100 --> 00:04:19,860 li jiftaħ fajl, per eżempju, dak li għandek tagħmel huwa attwalment stabbilit pointer għal dan il-fajl. 65 00:04:19,860 --> 00:04:22,710 Allura aħna għandna pointer * FAJL. 66 00:04:22,710 --> 00:04:27,140 F'dan il-każ, jien ssejjaħ magħha fil pointer minħabba li għaddej biex tkun infile tiegħi. 67 00:04:27,140 --> 00:04:33,340 U hekk jien ser tuża l-fopen funzjoni u allura l-isem tal-fajl 68 00:04:33,340 --> 00:04:36,360 u allura l-mod li bih jien ser ikunu jittrattaw mal-fajl. 69 00:04:36,360 --> 00:04:42,080 Allura hemm "r" f'dan il-każ għall-qari, "w" għall-kitba, u mbagħad "a" għal jpoġġu. 70 00:04:42,080 --> 00:04:44,270 Per eżempju, meta inti qed jittrattaw ma 'infile 71 00:04:44,270 --> 00:04:47,310 u kull ma tkun trid tagħmel hu li jaqra l-bits u bytes maħżuna hemmhekk, 72 00:04:47,310 --> 00:04:50,420 allura int probabilment tmur jridu jużaw "r" bħala modalità tiegħek. 73 00:04:50,420 --> 00:04:54,520 Meta inti tixtieq li attwalment tikteb, it-tip ta 'jagħmel fajl ġdid, 74 00:04:54,520 --> 00:04:57,220 allura dak li aħna qed tmur biex tagħmel hu li aħna qed tmur biex tiftaħ il-fajl ġdid 75 00:04:57,220 --> 00:05:02,410 u jużaw il-"w" mod għall-kitba. 76 00:05:02,410 --> 00:05:07,540 >> Mela allura meta int fil-fatt taqra fil-fajls, l-istruttura hija kif ġej. 77 00:05:07,540 --> 00:05:14,930 L-ewwel għandek tinkludi l-pointer għall-Struct li se jkun fiha l-bytes li int qari. 78 00:05:14,930 --> 00:05:19,830 Allura li għaddej biex tkun il-post tmiem tal-bytes li int qari. 79 00:05:19,830 --> 00:05:23,360 Int imbagħad ser tindika d-daqs, bħal bażikament kemm bytes 80 00:05:23,360 --> 00:05:30,100 programm tiegħek għandu jinqara għall-fajl, id-daqs bażikament element wieħed huwa, 81 00:05:30,100 --> 00:05:32,620 u allura int ser jispeċifika kemm elementi inti tixtieq li taqra. 82 00:05:32,620 --> 00:05:34,980 U mbagħad finalment, inti għandek tkun taf fejn inti qed taqra minn, 83 00:05:34,980 --> 00:05:37,580 hekk li għaddej biex tkun pointer fil tiegħek. 84 00:05:37,580 --> 00:05:41,780 I color-coded dawn minħabba fread huwa wkoll simili ħafna għall fwrite, 85 00:05:41,780 --> 00:05:47,050 ħlief inti tixtieq li tagħmel ċert li inti tuża l-ordni dritt, 86 00:05:47,050 --> 00:05:51,960 kun żgur li int fil-fatt bil-miktub jew qari mill-fajl lemin. 87 00:05:54,910 --> 00:05:58,610 >> Mela allura bħal qabel, jekk ikollna l-daqs tal-element kif ukoll in-numru ta 'elementi, 88 00:05:58,610 --> 00:06:00,600 allura aħna tista 'tilgħab madwar hawn ftit. 89 00:06:00,600 --> 00:06:06,810 Say I jkollhom Struct DOG u għalhekk mbagħad I trid taqra żewġ klieb fi żmien. 90 00:06:06,810 --> 00:06:12,450 What I tista 'tagħmel huwa jgħid id-daqs ta' element wieħed se jkun id-daqs ta 'waħda DOG 91 00:06:12,450 --> 00:06:14,770 u jien ser fil-fatt taqra tnejn minnhom. 92 00:06:14,770 --> 00:06:18,290 Alternattivament, dak I tista 'tagħmel huwa ngħid jien biss ser jinqara element wieħed 93 00:06:18,290 --> 00:06:21,340 u li element wieħed se jkun id-daqs ta 'żewġ klieb. 94 00:06:21,340 --> 00:06:24,320 Allura dak analogu kif inti tista tip ta 'logħob madwar daqs u numru 95 00:06:24,320 --> 00:06:28,250 jiddependi fuq x'hemm aktar intuwittivi għalik. 96 00:06:28,250 --> 00:06:30,810 >> Kull dritt. Allura issa nikbru għall-fajls bil-miktub. 97 00:06:30,810 --> 00:06:36,880 Meta inti tixtieq li jiktbu fajl, l-ewwel argument huwa attwalment fejn inti qed taqra minn. 98 00:06:36,880 --> 00:06:42,050 Allura dak bażikament l-informazzjoni li inti ser jikteb fil-fajl, 99 00:06:42,050 --> 00:06:44,490 li huwa l-pointer fl-aħħar. 100 00:06:44,490 --> 00:06:47,670 Allura meta inti qed jittrattaw ma 'l-pset, aċċerta ruħek li ma jsibux konfuż. 101 00:06:47,670 --> 00:06:50,480 Forsi l-ġenb mill-ġenb definizzjonijiet. 102 00:06:50,480 --> 00:06:58,090 Tista 'pull-definizzjonijiet fil-manwal billi jittajpja bniedem u mbagħad fwrite, per eżempju, 103 00:06:58,090 --> 00:06:59,950 fit-terminal, jew inti tista 'tirreferi lura għal dan slide 104 00:06:59,950 --> 00:07:03,570 u kun żgur li inti qed tuża l-waħda id-dritt. 105 00:07:03,570 --> 00:07:08,700 Għalhekk għal darb'oħra, għall fwrite, meta jkollok fajl li inti tixtieq li tikteb fi, 106 00:07:08,700 --> 00:07:14,290 li għaddej biex tkun l-aħħar argument u li għaddej biex tkun pointer għal dan il-fajl. 107 00:07:14,290 --> 00:07:18,670 Mela allura dak l-mod kif nittrattaw miktub forsi bytes fl-istess waqt, 108 00:07:18,670 --> 00:07:21,820 imma jgħidu inti tixtieq li biss jiktbu wieħed biss karattru wieħed. 109 00:07:21,820 --> 00:07:25,940 Kif Ser naraw aktar tard f'dan l-eżempju, fil-bitmaps aħna ser ikollhom biex jużaw dan. 110 00:07:25,940 --> 00:07:32,180 Li meta nistgħu nużaw fputc, essenzjalment biss it-tqegħid karattru wieħed fi żmien, CHR, 111 00:07:32,180 --> 00:07:37,050 fil-pointer fajl, u dan huwa tagħna out pointer hemmhekk. 112 00:07:38,700 --> 00:07:41,560 Allura mbagħad meta aħna nfittxu jew ikteb fil-fajl, 113 00:07:41,560 --> 00:07:44,690 il-fajl huwa iżżomm rekord ta 'fejn ninsabu. 114 00:07:44,690 --> 00:07:47,810 Allura huwa tip ta 'cursor, l-indikatur tal-pożizzjoni fajl. 115 00:07:47,810 --> 00:07:54,330 U hekk kull meta aħna tikteb jew taqra darb'oħra fis-fajl, 116 00:07:54,330 --> 00:07:56,760 l-fajl fil-fatt jiftakar fejn hi, 117 00:07:56,760 --> 00:07:59,270 u għalhekk tkompli minn fejn il-cursor huwa. 118 00:07:59,270 --> 00:08:03,970 Dan jista 'jkun ta' benefiċċju meta inti tixtieq li, ngħidu aħna, moqri ċertu ammont biex jagħmel xi ħaġa 119 00:08:03,970 --> 00:08:06,160 u mbagħad jaqra fl-ammont li ġej, 120 00:08:06,160 --> 00:08:10,700 imma xi kultant aħna tista 'tixtieq li tmur lura jew tabilħaqq tibda minn valur ta' referenza partikolari. 121 00:08:10,700 --> 00:08:16,870 Mela allura l-funzjoni fseek, dak li tagħmel huwa jippermetti li jiċċaqalqu il-cursor fil-fajl ċerti 122 00:08:16,870 --> 00:08:19,680 ċertu numru ta 'bytes. 123 00:08:19,680 --> 00:08:24,260 U allura dak li rridu nagħmlu huwa jispeċifika fejn il-valur ta 'referenza huwa. 124 00:08:24,260 --> 00:08:31,520 Allura kemm huwa jimxi 'l quddiem jew lura minn fejn il-cursor huwa attwalment, 125 00:08:31,520 --> 00:08:35,750 jew nistgħu jispeċifikaw li din għandha biss jimxu fuq il-bidu tal-fajl 126 00:08:35,750 --> 00:08:37,090 jew mill-aħħar tal-fajl. 127 00:08:37,090 --> 00:08:41,230 U għalhekk inti tista 'tgħaddi fil-valuri negattivi jew pożittivi għal ammont, 128 00:08:41,230 --> 00:08:44,960 u li se tip ta 'jiċċaqalqu il-cursor jew quddiem jew lura. 129 00:08:46,170 --> 00:08:51,920 >> Qabel ma aħna nġibu fis-psets oħra, xi mistoqsijiet dwar il-fajl I / O? 130 00:08:53,860 --> 00:08:59,990 Okay. Kif aħna jsibu rwieħhom aktar eżempji, li tħossok liberu li tieqaf lili għall-mistoqsijiet. 131 00:08:59,990 --> 00:09:06,930 >> Għalhekk fl whodunit, int mogħtija fajl Bitmap simili għal dan wieħed aħmar fuq il-pjastra, 132 00:09:06,930 --> 00:09:14,510 u jidher qisu dan - mazz ta 'tikek ħomor - u inti ma verament jafu x'hemm miktub. 133 00:09:14,510 --> 00:09:23,310 Jekk inti squint, inti tista 'tkun kapaċi li tara kulur blu żgħir ġewwa l-nofs. 134 00:09:23,310 --> 00:09:26,270 Essenzjalment, dan huwa fejn it-test huwa maħżun. 135 00:09:26,270 --> 00:09:30,270 Kien hemm qtil li ġara, u għandna bżonn biex issir taf li ma kien. 136 00:09:30,270 --> 00:09:36,760 Sabiex tagħmel dan, għandna bżonn li tip ta 'jikkonvertu din id-dehra fil-format li tinqara. 137 00:09:36,760 --> 00:09:42,740 Jekk inti guys qatt jiltaqgħu dan, xi kultant ikun hemm kits ftit 138 00:09:42,740 --> 00:09:48,510 fejn inti jkollha lenti ma 'film aħmar. Kulħadd? Yeah. 139 00:09:48,510 --> 00:09:52,770 Allura inti tkun xi ħaġa b'idejhom bħal din, inti għandek lenti 140 00:09:52,770 --> 00:09:58,130 mal-film aħmar fuqha, inti poġġih fuq l-immaġni, 141 00:09:58,130 --> 00:10:03,410 u inti tkun kapaċi li tara l-messaġġ moħbija fihom. 142 00:10:03,410 --> 00:10:07,080 Aħna ma jkollhom ħġieġ ingrandiment ma 'film aħmar, hekk minflok aħna qed tmur biex joħolqu tip ta' tagħna stess 143 00:10:07,080 --> 00:10:09,060 f'dan pset. 144 00:10:09,060 --> 00:10:15,760 U għalhekk l-utent se whodunit input, allura l-clue,. BMP, 145 00:10:15,760 --> 00:10:18,800 b'tali mod li l-infile, dak l-messaġġ dot aħmar, 146 00:10:18,800 --> 00:10:23,550 u allura dawn qed tgħid verdict.bmp se tkun outfile tagħna. 147 00:10:23,550 --> 00:10:27,900 Allura li għaddej biex toħloq immaġni Bitmap ġdid simili għal clue 1 148 00:10:27,900 --> 00:10:32,600 ħlief fil-format li tinqara fejn nistgħu naraw il-messaġġ moħbija. 149 00:10:32,600 --> 00:10:37,550 >> Minħabba li aħna qed tmur biex tkun jittrattaw editjar u timmanipula bitmaps ta 'xi tip, 150 00:10:37,550 --> 00:10:42,400 aħna qed tmur biex tip ta 'adsa fis fl-istruttura ta' dawn il-fajls Bitmap. 151 00:10:42,400 --> 00:10:48,130 Aħna marru fuq dawn ftit ftit fil-lecture, imma ejja nħarsu ġo fihom ftit aktar. 152 00:10:48,130 --> 00:10:51,740 Bitmaps huma essenzjalment biss arranġament ta 'bytes 153 00:10:51,740 --> 00:10:55,790 fejn konna speċifikat liema bytes tfisser dak. 154 00:10:55,790 --> 00:11:00,540 Allura hawnhekk huwa tip simili ta 'mappa ta' l-immaġini Bitmap 155 00:11:00,540 --> 00:11:08,550 qal li jibda ma 'xi fajls header, tibda ma' xi informazzjoni fil hemmhekk. 156 00:11:08,550 --> 00:11:16,540 Inti tara li madwar in-numru byte 14-daqs huwa indikat mill-immaġini Bitmap, 157 00:11:16,540 --> 00:11:18,520 u tkompli fuq. 158 00:11:18,520 --> 00:11:23,810 Imma mbagħad dak li aħna qed verament interessati fil hawn qed jibda madwar numru byte 54. 159 00:11:23,810 --> 00:11:26,060 Għandna dawn triples RGB. 160 00:11:26,060 --> 00:11:30,760 Dak li għaddej biex tagħmel hu jkun fiha l-pixels attwali, il-valuri tal-kulur. 161 00:11:30,760 --> 00:11:35,950 Kollox hawn fuq li fil-header hija xi informazzjoni 162 00:11:35,950 --> 00:11:41,240 jikkorrispondi għad-daqs tal-immaġini, il-wisa 'l-immaġini, u l-għoli. 163 00:11:41,240 --> 00:11:44,930 Meta immorru fis ikkuttunar aktar tard, aħna ser tara għaliex id-daqs ta 'l-immaġini 164 00:11:44,930 --> 00:11:48,670 jista 'jkun differenti mill-wisa' jew l-għoli. 165 00:11:48,670 --> 00:11:54,240 Mela allura li jirrappreżentaw dawn - dawn immaġini Bitmap huma sekwenzi ta 'bytes - 166 00:11:54,240 --> 00:11:59,370 dak li stajna nagħmlu hu jgħid okay, jien ser jiftakar li fil-indiċi 14, 167 00:11:59,370 --> 00:12:03,380 li meta d-daqs huwa, per eżempju, iżda minflok dak li aħna qed tmur biex tagħmel biex tagħmel dan aktar faċli 168 00:12:03,380 --> 00:12:06,020 huwa jirrappreżentaw dan fil Struct. 169 00:12:06,020 --> 00:12:08,880 U hekk għandna żewġ structs ssir għalina, a BITMAPFILEHEADER 170 00:12:08,880 --> 00:12:10,440 u BITMAPINFOHEADER, 171 00:12:10,440 --> 00:12:14,840 u hekk kull meta naqraw fl għal dan il-fajl, fil-kontumaċja huwa se jkunu għaddejjin sabiex, 172 00:12:14,840 --> 00:12:22,360 u għalhekk sabiex huwa wkoll ser timla f 'varjabbli bħall biWidth u biSize. 173 00:12:25,270 --> 00:12:31,230 U mbagħad finalment, kull pixel huwa rappreżentat minn tlett bytes. 174 00:12:31,230 --> 00:12:35,500 L-ewwel waħda hija l-ammont ta 'ikħal fil-pixel, it-tieni huwa l-ammont ta' aħdar, 175 00:12:35,500 --> 00:12:41,120 u finalment, l-ammont ta 'aħmar, fejn 0 huwa essenzjalment l-ebda aħdar blu jew le jew l-ebda ħamra 176 00:12:41,120 --> 00:12:43,720 u allura ff huwa l-valur massimu. 177 00:12:43,720 --> 00:12:46,800 Dawn huma valuri hexadeċimali. 178 00:12:46,800 --> 00:12:53,870 Mela allura jekk ikollna ff0000, allura li tikkorrispondi għall-ammont massimu ta 'blue 179 00:12:53,870 --> 00:12:58,890 u allura l-ebda aħdar u l-ebda aħmar, hekk allura li tagħtina pixel blu. 180 00:12:58,890 --> 00:13:04,190 Imbagħad jekk ikollna kollha ff s madwar il-bord, allura dan ifisser li għandna pixel abjad. 181 00:13:04,190 --> 00:13:11,370 Dan huwa tip ta 'oppost għal tipikament meta ngħidu RGB. Huwa fil-fatt tmur BGR. 182 00:13:12,750 --> 00:13:18,990 >> Allura jekk aħna verament tħares lejn eżempju ta 'immaġni Bitmap - let me pull wieħed up here. 183 00:13:31,560 --> 00:13:33,830 Huwa żgħir ftit. 184 00:13:39,890 --> 00:13:47,840 Jien zooming fil-, u nistgħu naraw huwa pixelated. Jidher qisu blokki ta 'kulur. 185 00:13:47,840 --> 00:13:50,110 Inti għandek blokki abjad u mbagħad blokki aħmar. 186 00:13:50,110 --> 00:13:53,700 Jekk inti play fil Paint Microsoft, per eżempju, inti tista 'tagħmel xi ħaġa bħal dik 187 00:13:53,700 --> 00:13:58,960 billi bażikament biss pittura kwadri ċerti f'ordni speċifika. 188 00:13:58,960 --> 00:14:08,060 Mela allura dak dan ifisser li fil-Bitmap hija kif ġej. 189 00:14:08,060 --> 00:14:15,710 Hawnhekk għandna pixels abjad ewwel, li kollha 6 huma s f, u mbagħad għandna pixels ħomor, 190 00:14:15,710 --> 00:14:19,910 indikat mill 0000ff. 191 00:14:19,910 --> 00:14:27,940 U għalhekk l-sekwenza ta 'bytes li għandna tindika kif l-immaġini Bitmap huwa ser tfittex. 192 00:14:27,940 --> 00:14:32,230 Allura dak I ghamilt hawn huwa biss jinkiteb dawk kollha bytes u mbagħad kulur fl-aħmar 193 00:14:32,230 --> 00:14:37,550 sabiex inti tista 'tip ta' tara, jekk inti squint ftit, kif dan it-tip ta jindika wiċċ smiley. 194 00:14:40,180 --> 00:14:46,390 >> Il-mod li Bitmap immaġini xogħol huwa I envision bażikament bħala grilja. 195 00:14:46,390 --> 00:14:54,940 U għalhekk fil-kontumaċja, kull ringiela tal-grilja għandu jkun multiplu ta '4 bytes. 196 00:15:00,520 --> 00:15:07,060 Jekk inħarsu lejn immaġini Bitmap, int timla kull valur. 197 00:15:07,060 --> 00:15:17,370 Per eżempju, inti jista 'jkollok aħmar hawn, aħdar hawn, blu hawn, 198 00:15:17,370 --> 00:15:24,950 iżda inti għandek tagħmel ċert li l-immaġini huwa mimli ma 'multiplu ta' 4 bytes. 199 00:15:24,950 --> 00:15:32,200 Mela jekk irrid image tiegħi li jkun ta 'tliet blokki wiesgħa, allura nixtieq għandek tpoġġi valur vojt 200 00:15:32,200 --> 00:15:35,640 fl-aħħar wieħed li jagħmel bħala multiplu ta '4. 201 00:15:35,640 --> 00:15:39,530 Allura mbagħad Inżid xi ħaġa li aħna qed titlob padding. 202 00:15:39,530 --> 00:15:43,750 Jien biss se jindikaw li hemm ma 'x. 203 00:15:44,920 --> 00:15:54,160 Issa ngħidu li rridu immaġni li hija ta '7 pixels twil, per eżempju. 204 00:15:54,160 --> 00:15:59,550 We have 1, 2, 3, 4, 5, 6, 7, 205 00:16:04,750 --> 00:16:07,000 u kollha ta 'li huwa mimli bil-kulur. 206 00:16:07,000 --> 00:16:10,620 Il-mod li l-immaġini Bitmap xogħol hija li għandna bżonn ta '8. 207 00:16:10,620 --> 00:16:12,460 Dritt issa għandna 1, 2, 3, 4, 5, 6, 7. 208 00:16:12,460 --> 00:16:19,360 Għandna bżonn 8 spazji għall-immaġini Bitmap biex taqra b'mod korrett. 209 00:16:19,360 --> 00:16:25,600 Mela allura dak li għandna tagħmel hu li żżid fil biss daqsxejn ta 'padding 210 00:16:25,600 --> 00:16:29,430 biex tiżgura li kollha tal-wisgħat huma uniformi 211 00:16:29,430 --> 00:16:34,260 u li kollha tal-wisgħat huma multiplu ta '4. 212 00:16:42,110 --> 00:16:47,310 U hekk jien indikat qabel, ikkuttunar bħala x jew squiggly linja, 213 00:16:47,310 --> 00:16:53,880 iżda fil-immaġini Bitmap attwali l-ikkuttunar hija indikata permezz ta '0 hexadeċimali. 214 00:16:53,880 --> 00:16:57,340 Allura li tkun karattru wieħed, 0. 215 00:16:58,980 --> 00:17:06,329 Liema jista 'jidħol fil handy hija l-kmand xxd. 216 00:17:06,329 --> 00:17:11,220 Dak li dan huwa fil-fatt turi li inti, simili simili għal dak li għamilt qabel ma 'l-smiley 217 00:17:11,220 --> 00:17:15,630 meta I attwalment stampata liema kull kulur għandha tkun għall-pixel 218 00:17:15,630 --> 00:17:21,800 u mbagħad kulur kodifikati li, meta inti tmexxi xxd bil-kmandijiet li ġejjin, 219 00:17:21,800 --> 00:17:28,670 imbagħad fil-fatt se jistampa liema l-kuluri huma għal dawk pixels. 220 00:17:28,670 --> 00:17:33,810 Dak li għandek tagħmel huwa fuq here I tindika, bħall-s-54 221 00:17:33,810 --> 00:17:36,530 jgħid li jien ser tibda fil-byte 54 222 00:17:36,530 --> 00:17:40,820 għaliex qabel li, ftakar jekk inħarsu lura lejn il-mappa ta 'l-bitmaps, 223 00:17:40,820 --> 00:17:42,690 li l-informazzjoni kollha header u affarijiet bħal dik. 224 00:17:42,690 --> 00:17:46,280 Imma dak li aħna verament jimpurtak huwa l-pixels effettivi li jindikaw l-kulur. 225 00:17:46,280 --> 00:17:52,700 Allura billi żżid f'dak bandiera,-i 54, allura aħna qed kapaċi li tara l-valuri tal-kulur. 226 00:17:52,700 --> 00:17:56,020 U ma joqogħdu jinkwetaw dwar l-bnadar kkumplikata u affarijiet bħal dik. 227 00:17:56,020 --> 00:18:05,020 Fil-spec sett problema, inti ser ikollok direzzjonijiet dwar kif tuża xxd biex jesponi l-pixels. 228 00:18:07,070 --> 00:18:15,590 Mela jekk tara hawn, huwa tip ta 'qisu kaxxa ħadra, dan il-ħaġa żgħira. 229 00:18:15,590 --> 00:18:23,610 Stajt kulur kodifikati l 00ff00 bħala bażikament tgħid l-ebda blu, lott ta 'aħdar, u l-ebda aħmar. 230 00:18:23,610 --> 00:18:26,370 Allura li jikkorrispondi għal aħdar. 231 00:18:26,370 --> 00:18:31,920 Kif qed taraw hawn, naraw rettangolu aħdar. 232 00:18:31,920 --> 00:18:36,660 Dan ir-rettangolu aħdar huwa biss 3 pixels wiesgħa, hekk allura dak li għandna nagħmlu 233 00:18:36,660 --> 00:18:44,350 biex tiżgura li l-immaġini huwa multiplu ta '4 wiesgħa hu li żżid fl-ikkuttunar żejda. 234 00:18:44,350 --> 00:18:49,460 U hekk allura li l-mod kif inti tara dawn 0s hawn. 235 00:18:49,460 --> 00:18:54,510 Dan fil-fatt se tkun ir-riżultat ta 'pset Resize tiegħek, 236 00:18:54,510 --> 00:19:01,350 essenzjalment tieħu l-Bitmap żgħar u mbagħad mkabbar sa l-4. 237 00:19:01,350 --> 00:19:09,380 U hekk dak li naraw hija li fil-fatt din id-dehra huwa ta '12 pixels wiesgħa, iżda 12 huwa multiplu ta' 4, 238 00:19:09,380 --> 00:19:12,940 u hekk aħna fil-fatt ma tara l-ebda 0s fl-aħħar għaliex aħna ma bżonn li żżid xi 239 00:19:12,940 --> 00:19:19,070 għaliex dan huwa kompletament padded. Huwa ma jkollu spazju aktar. 240 00:19:20,720 --> 00:19:23,470 >> Okay. Kwalunkwe mistoqsijiet dwar ikkuttunar? 241 00:19:25,150 --> 00:19:27,460 Okay. Kessaħ. 242 00:19:27,460 --> 00:19:32,520 >> Kif semmejt qabel, il bitmaps huma biss sekwenza ta 'bytes. 243 00:19:32,520 --> 00:19:39,170 U hekk dak li għandna huwa minflok jeħtieġu li jżommu rekord ta 'eżattament liema numru ta' byte 244 00:19:39,170 --> 00:19:47,050 tikkorrispondi għal element speċifiku, aħna fil-fatt ħolqu Struct biex jirrappreżenta dak. 245 00:19:47,050 --> 00:19:50,930 Allura dak li għandna huwa Struct RGBTRIPLE. 246 00:19:50,930 --> 00:19:54,590 Kull meta għandek każ ta 'triple RGB, 247 00:19:54,590 --> 00:20:00,970 għaliex dan huwa tip jiddefinixxi Struct, allura inti tista 'aċċess l-varjabbli rgbtBlue, 248 00:20:00,970 --> 00:20:09,520 bl-istess mod il-varjabbli Green u Red, li se jindikaw kemm blu,, aħdar, u aħmar 249 00:20:09,520 --> 00:20:11,580 rispettivament, għandek. 250 00:20:11,580 --> 00:20:16,800 >> Allura jekk aħna għandna l-sett varjabbli blu għal 0, is-sett aħdar li ff, 251 00:20:16,800 --> 00:20:22,060 li huwa l-valur massimu inti jista 'jkollhom, u allura l-varjabbli aħmar ssettjat għal 0, 252 00:20:22,060 --> 00:20:27,870 allura dak color kieku dan triple RGB partikolari jirrappreżenta? >> [Student] Green. 253 00:20:27,870 --> 00:20:29,150 Green. Eżattament. 254 00:20:29,150 --> 00:20:34,480 Huwa ser tkun utli li tkun taf li kull meta għandek każ ta 'triple RGB, 255 00:20:34,480 --> 00:20:41,340 inti tista 'attwalment aċċess għall-ammont ta' kulur - blu, aħdar, u aħmar - separatament. 256 00:20:43,350 --> 00:20:54,900 >> Issa li konna tkellimna dwar l-istruttura ta 'dan, ejja tagħti ħarsa lejn il-fajl BMP. 257 00:20:54,900 --> 00:20:57,870 Dawn huma structs magħmula għalik. 258 00:20:57,870 --> 00:21:01,820 Hawnhekk għandna Struct BITMAPFILEHEADER. 259 00:21:01,820 --> 00:21:07,610 Ta 'interess huwa d-daqs. 260 00:21:07,610 --> 00:21:12,660 Aktar tard, aħna għandna l-header info, li għandha ftit affarijiet aktar li huma interessanti għalina, 261 00:21:12,660 --> 00:21:15,480 jiġifieri d-daqs, il-wisa ', u l-għoli. 262 00:21:15,480 --> 00:21:19,170 Kif aħna ser jmorru fil aktar tard, meta inti taqra fil-fajl, 263 00:21:19,170 --> 00:21:25,500 awtomatikament jaqra fl għaliex konna tistabbilixxi l-ordni li tkun l-istess. 264 00:21:25,500 --> 00:21:31,990 Allura l-biSize se jkun fiha l-bytes dritt li jikkorrispondu għad-daqs attwali tal-immaġini. 265 00:21:34,700 --> 00:21:40,500 U allura hawnhekk, fl-aħħar nett, kif konna tkellimna dwar, aħna għandna l-Struct typedef RGBTRIPLE. 266 00:21:40,500 --> 00:21:46,840 Għandna rgbtBlue, Green, u Red assoċjati magħha. 267 00:21:48,210 --> 00:21:49,340 >> Great. Okay. 268 00:21:49,340 --> 00:21:56,360 Issa li aħna nifhmu bitmaps ftit, jifhmu li aħna għandna header tal-fajl 269 00:21:56,360 --> 00:22:00,790 u header info assoċjati magħha u mbagħad wara dan, aħna għandna l-għalf interessanti 270 00:22:00,790 --> 00:22:05,110 mill-kuluri, u dawk il-kuluri huma rrappreżentati minn structs RGBTRIPLE, 271 00:22:05,110 --> 00:22:12,710 u dawk, imbagħad, għandhom tliet valuri assoċjati mal-blu, l-aħdar, u l-aħmar. 272 00:22:12,710 --> 00:22:17,270 >> Allura issa, nistgħu tip ta 'jaħsbu dwar Jirkupra daqsxejn. 273 00:22:17,270 --> 00:22:20,130 Jiddispjacini. Aħseb dwar whodunit. 274 00:22:20,130 --> 00:22:25,750 Meta aħna għandna fajl clue tagħna, allura dak li rridu nagħmlu huwa li jinqara lilha pixel mill pixel 275 00:22:25,750 --> 00:22:33,860 u mbagħad b'xi mod jibdlu dawk pixels sabiex inkunu nistgħu output huwa fi format li tinqara. 276 00:22:33,860 --> 00:22:41,020 U għalhekk li l-output huwa, aħna qed tmur biex jiktbu pixel mill pixel fil-fajl verdict.bmp. 277 00:22:41,020 --> 00:22:45,120 Dak it-tip ta 'lott li jagħmlu. Niftakru li. 278 00:22:45,120 --> 00:22:49,860 Allura dak li aħna ghamilt hija li aħna stajt attwalment sakemm illi inti ma copy.c. 279 00:22:49,860 --> 00:22:57,610 X'inhu copy.c ma huwa biss jagħmel kopja eżatta ta 'fajl Bitmap partikolari u mbagħad outputs tiegħu. 280 00:22:57,610 --> 00:23:01,900 Allura dan diġà jiftaħ il-fajl għalik, jaqra fil pixel mill pixel, 281 00:23:01,900 --> 00:23:04,510 u mbagħad jikteb fil f'fajl output. 282 00:23:04,510 --> 00:23:07,080 >> Ejja tagħti ħarsa lejn dak. 283 00:23:13,390 --> 00:23:18,290 Dan huwa żgurat użu xieraq, 284 00:23:18,290 --> 00:23:22,640 jkollna l-filenames hawn. 285 00:23:22,640 --> 00:23:29,940 X'inhu dan ma huwa jistabbilixxi l-input fajl li jkun dak li konna għadda fil fil-infile hawn, 286 00:23:29,940 --> 00:23:34,750 li huwa t-tieni kmand tal-linja tagħna argument. 287 00:23:34,750 --> 00:23:37,640 Kontrolli li tagħmel ċert li nistgħu tiftaħ il-fajl. 288 00:23:38,960 --> 00:23:44,860 Kontrolli biex tiżgura nistgħu nagħmlu outfile ġdid hawn. 289 00:23:45,630 --> 00:23:53,270 Imbagħad dak li dan ma hawn, hija biss bażikament jibda qari fil-fajl Bitmap mill-bidu. 290 00:23:53,270 --> 00:23:56,700 Il-bidu, kif nafu, fiha l-BITMAPFILEHEADER, 291 00:23:56,700 --> 00:24:03,200 u għalhekk dawk sekwenzi ta 'bits se direttament jimlew il-BITMAPFILEHEADER. 292 00:24:03,200 --> 00:24:07,940 Allura dak li għandna hawnhekk huwa qal li bf BITMAPFILEHEADER - 293 00:24:07,940 --> 00:24:13,150 li l-varjabbli ġdida tagħna ta 'BITMAPFILEHEADER tip - 294 00:24:13,150 --> 00:24:22,560 aħna qed tmur biex jitqiegħdu ġewwa bf dak li naqraw minn fl pointer, li huwa infile tagħna. 295 00:24:22,560 --> 00:24:23,970 Kemm naqraw? 296 00:24:23,970 --> 00:24:32,160 Naqraw fil kemm bytes għandna bżonn li jkun fiha l-BITMAPFILEHEADER kollu. 297 00:24:32,160 --> 00:24:34,660 Bl-istess mod, dan huwa dak li nagħmlu għall-header info. 298 00:24:34,660 --> 00:24:39,010 Allura aħna qed jinżlu mal-fajl tagħna fil-infile, 299 00:24:39,010 --> 00:24:44,360 u aħna qed qari ta 'dawn bits u bytes, u aħna qed pagamnenti lilhom direttament fl- 300 00:24:44,360 --> 00:24:47,880 f'dawn każijiet tal-varjabbli li aħna qed jagħmlu. 301 00:24:49,370 --> 00:24:53,800 Hawnhekk aħna qed biss tagħmel ċert li l-Bitmap hija Bitmap. 302 00:24:57,670 --> 00:25:01,030 >> Issa għandna outfile, id-dritt? 303 00:25:01,030 --> 00:25:04,420 Hekk kif inhi meta aħna joħolqu dan, huwa essenzjalment vojta. 304 00:25:04,420 --> 00:25:07,710 Allura aħna għandna biex bażikament joħolqu Bitmap ġdida mill-bidu. 305 00:25:07,710 --> 00:25:12,280 Dak li nagħmlu huwa irridu niżguraw li kopja fil-header tal-fajl 306 00:25:12,280 --> 00:25:16,850 u l-header info bħall-infile jkun. 307 00:25:16,850 --> 00:25:22,850 Dak li nagħmlu huwa aħna tikteb - u ftakar li bf huwa l-varjabbli 308 00:25:22,850 --> 00:25:29,300 ta BITMAPFILEHEADER tip, sabiex dak li nagħmlu huwa li aħna biss użu li l-kontenut 309 00:25:29,300 --> 00:25:34,980 li tikteb fil-outfile. 310 00:25:36,550 --> 00:25:38,510 Hawnhekk, ftakar tkellimna dwar ikkuttunar, 311 00:25:38,510 --> 00:25:47,820 kemm huwa importanti li jiġi żgurat li l-ammont ta 'pixels li għandna huwa multiplu ta' 4. 312 00:25:47,820 --> 00:25:52,790 Din hija formula pjuttost utli biex jikkalkulaw kemm ikkuttunar għandek 313 00:25:52,790 --> 00:25:57,670 minħabba l-wisa 'tal-fajl tiegħek. 314 00:25:57,670 --> 00:26:04,120 Irrid inti guys li wieħed jiftakar li fil copy.c għandna formula għall-kalkolu ikkuttunar. 315 00:26:04,120 --> 00:26:07,970 Okay? Allura kulħadd ftakar li. Great. 316 00:26:07,970 --> 00:26:14,050 Mela allura dak copy.c ma huwa d-dieħla ttenni fuq kollha ta 'l-scanlines. 317 00:26:14,050 --> 00:26:23,730 Hija tmur permezz-ringieli ewwel u mbagħad stores kull triplu li jgħid 318 00:26:23,730 --> 00:26:26,920 u mbagħad jikteb hija fil-outfile. 319 00:26:26,920 --> 00:26:33,120 Mela allura hawnhekk aħna qed qari wieħed biss RGB triplu fi żmien 320 00:26:33,120 --> 00:26:39,860 u mbagħad tqegħid li triple-istess fil-outfile. 321 00:26:41,120 --> 00:26:48,340 Il-parti delikata huwa li l-ikkuttunar mhijiex triplu RGB, 322 00:26:48,340 --> 00:26:55,200 u għalhekk ma nistgħux aqra biss dak l-ammont ikkuttunar ta 'triples RGB. 323 00:26:55,200 --> 00:27:01,460 Dak li għandek tagħmel huwa fil-fatt biss jiċċaqalqu indikatur tagħna pożizzjoni fajl, jimxu cursor tagħna, 324 00:27:01,460 --> 00:27:06,840 għall tip ta 'skip fuq l-ikkuttunar sabiex inkunu qed fil-filliera li jmiss. 325 00:27:06,840 --> 00:27:12,990 U allura dak li dan ma huwa kopja jurik kif inti tista 'tixtieq iżżid l-ikkuttunar. 326 00:27:12,990 --> 00:27:14,990 Allura aħna ve kkalkulat kemm ikkuttunar għandna bżonn, 327 00:27:14,990 --> 00:27:18,220 b'tali mod li jfisser li għandna bżonn numru ikkuttunar ta 0s. 328 00:27:18,220 --> 00:27:24,510 X'inhu dan ma huwa għal loop li tpoġġi numru ikkuttunar ta 0s fis outfile tagħna. 329 00:27:24,510 --> 00:27:31,170 U mbagħad finalment, inti qrib kemm fajls. Inti tagħlaq il infile kif ukoll il-outfile. 330 00:27:31,170 --> 00:27:34,870 >> Allura li kif copy.c xogħlijiet, 331 00:27:34,870 --> 00:27:37,430 u li għaddej biex tkun pjuttost utli. 332 00:27:39,720 --> 00:27:43,750 Minflok biss fil-fatt direttament ikkupjar u pasta 333 00:27:43,750 --> 00:27:46,800 jew biss tħares lejn din u t-tajping fi kwalunkwe inti tixtieq, 334 00:27:46,800 --> 00:27:49,440 inti tista 'biss tixtieq li teżegwixxi dan il-kmand fil-terminal, 335 00:27:49,440 --> 00:27:54,520 cp copy.c whodunit.c, li se toħloq fajl ġdid, whodunit.c, 336 00:27:54,520 --> 00:27:58,330 li fih l-istess kontenut eżatt ma kopja bħala. 337 00:27:58,330 --> 00:28:03,880 Mela allura dak li nistgħu nagħmlu huwa juża dik bħala qafas li fuqhom biex jibnu u jeditjaw 338 00:28:03,880 --> 00:28:06,900 għall-fajl whodunit tagħna. 339 00:28:08,500 --> 00:28:14,670 >> Dawn huma tagħna għall-dos li tagħmel għall whodunit, imma dak copy.c ma 340 00:28:14,670 --> 00:28:16,730 huwa attwalment jieħu ħsieb ta 'ħafna minnhom għalina. 341 00:28:16,730 --> 00:28:21,900 Allura kollha għandna bżonn tagħmel li jmiss huwa jibdlu l-pixels kif meħtieġ 342 00:28:21,900 --> 00:28:25,920 li fil-fatt jagħmel il-fajl tinqara. 343 00:28:25,920 --> 00:28:32,960 Ftakar li għal pixel triplu partikolari, hekk għal varjabbli partikolari ta 'RGBTRIPLE tip, 344 00:28:32,960 --> 00:28:35,990 inti tista 'aċċess l-blu, il-valuri aħdar, u aħmar. 345 00:28:35,990 --> 00:28:38,670 Li għaddej biex jidħol fil handy għaliex jekk inti tista 'aċċess għalihom, 346 00:28:38,670 --> 00:28:41,770 dan ifisser li inti tista 'wkoll verifikati magħhom, 347 00:28:41,770 --> 00:28:45,430 u dan ifisser li inti tista 'wkoll bidla minnhom. 348 00:28:45,430 --> 00:28:49,430 >> Allura meta aħna marru lura għall-eżempju tal-ħġieġ tagħna aħmar ingrandiment, 349 00:28:49,430 --> 00:28:53,390 bażikament, li kien qed jaġixxi bħala tip ta 'filtru għalina. 350 00:28:53,390 --> 00:28:58,160 Allura dak li rridu nagħmlu huwa li rridu biex jiffiltraw kollha ta 'l triples li huma ġejjin pulzieri 351 00:28:58,160 --> 00:29:01,240 Hemm ħafna modi differenti biex jagħmlu dan. 352 00:29:01,240 --> 00:29:07,100 Bażikament, inti jista 'jkollhom kwalunkwe tip ta' filtru li trid. 353 00:29:07,100 --> 00:29:09,890 Forsi inti tixtieq li tibdel l-pixels ħomor 354 00:29:09,890 --> 00:29:13,570 jew forsi trid tibdel pixel kulur differenti għal kulur differenti. 355 00:29:13,570 --> 00:29:15,400 Dak sa inti. 356 00:29:15,400 --> 00:29:19,580 Ftakar li inti tista 'tivverifika liema kulur il-pixel huwa 357 00:29:19,580 --> 00:29:23,000 u allura inti tista 'wkoll bidla kif inti qed tmur permezz. 358 00:29:24,410 --> 00:29:26,420 >> Okay. Allura dak whodunit. 359 00:29:26,420 --> 00:29:32,760 Ladarba inti tmexxi whodunit, inti ser tkun taf li l-ħati tar-reat kienet. 360 00:29:32,760 --> 00:29:35,540 >> Issa aħna qed tmur biex tmur Resize. 361 00:29:35,540 --> 00:29:37,990 Aħna ser xorta jkunu jittrattaw bitmaps. 362 00:29:37,990 --> 00:29:40,750 Dak li aħna qed tmur biex tagħmel hu li aħna qed tmur biex ikollhom Bitmap input 363 00:29:40,750 --> 00:29:45,890 u allura aħna qed tmur biex jgħaddi f'għadd u mbagħad jiksbu Bitmap outfile 364 00:29:45,890 --> 00:29:51,380 fejn dan huwa bażikament infile tagħna jitkabbru mill n. 365 00:29:54,670 --> 00:30:01,450 Say fajl tiegħi kien biss wieħed pixel kbar. 366 00:30:01,450 --> 00:30:09,100 Imbagħad jekk n tiegħi kienet 3, scaling bi 3, allura nixtieq nirrepeti li pixel n numru ta 'drabi, 367 00:30:09,100 --> 00:30:14,410 hekk 3 darbiet, u allura wkoll iskala l-isfel 3 darbiet ukoll. 368 00:30:14,410 --> 00:30:17,840 Allura inti tara li jien skalar li vertikalment kif ukoll orizzontalment. 369 00:30:17,840 --> 00:30:19,680 >> U allura hawnhekk eżempju. 370 00:30:19,680 --> 00:30:27,590 Jekk għandek n = 2, tara li l-pixel blu ewwel hemm ripetuta darbtejn 371 00:30:27,590 --> 00:30:30,930 orizzontalment kif sew bħala żewġ darbiet vertikalment. 372 00:30:30,930 --> 00:30:38,040 U mbagħad li jkompli fuq, u hekk ikollok skalar dirett ta 'immaġini oriġinali tiegħek bi tnejn. 373 00:30:40,920 --> 00:30:47,600 >> Mela allura jekk konna għall-dettall l-pseudocode għal dan, irridu li tiftaħ il-fajl. 374 00:30:47,600 --> 00:30:49,880 U mbagħad jafu li jekk immorru lura hawn, 375 00:30:49,880 --> 00:30:54,540 naraw li l-wisa 'għall-outfile se tkun differenti mill-wisa' għall-infile. 376 00:30:54,540 --> 00:30:56,130 X'ifisser dan? 377 00:30:56,130 --> 00:31:01,230 Dan ifisser li l-informazzjoni header tagħna huwa se jibdlu. 378 00:31:01,230 --> 00:31:03,790 U għalhekk dak li aħna ser trid tagħmel hu taġġorna l-info header, 379 00:31:03,790 --> 00:31:11,820 li jafu li meta naqraw fil-fajls jekk int joperaw fuq il-qafas copy.c, 380 00:31:11,820 --> 00:31:17,570 diġà għandna varjabbli li jindika dak il-qies huwa u affarijiet bħal dik. 381 00:31:17,570 --> 00:31:24,060 Allura ladarba inti għandek dan, dak li inti tista 'tixtieq li tagħmel hu li jibdlu dawk il-varjabbli partikolari. 382 00:31:24,060 --> 00:31:29,380 Ftakar, jekk għandek Struct, kif inti aċċess għall-fatturi varjabbli fi ħdan dik. 383 00:31:29,380 --> 00:31:32,080 Tuża l-operatur dot, id-dritt? 384 00:31:32,080 --> 00:31:36,420 Allura mbagħad jużaw dan, inti taf li ghandek bzonn biex jibdlu l-info header. 385 00:31:36,480 --> 00:31:41,030 Allura hawnhekk biss lista ta 'l-elementi konkreti li ser ikunu qed jinbidlu fil-fajl tiegħek. 386 00:31:41,030 --> 00:31:45,180 Il-daqs tal-fajl se jinbidlu, l-immaġni, kif ukoll il-wisa 'u l-għoli. 387 00:31:45,180 --> 00:31:50,080 Mela allura jmorru lura għall-mappa ta 'l-bitmaps, 388 00:31:50,080 --> 00:31:57,730 tħares lejn jekk huwa l-header tal-fajl jew il-header info li fiha dik l-informazzjoni 389 00:31:57,730 --> 00:32:00,920 u mbagħad bidla kif meħtieġ. 390 00:32:05,010 --> 00:32:12,470 Għal darb'oħra, jgħidu cp copy.c resize.c. 391 00:32:12,470 --> 00:32:19,270 Dan ifisser li resize.c issa fiha dak kollu li jinsab ġewwa kopja 392 00:32:19,270 --> 00:32:24,490 għaliex kopja jagħtina mod tal-qari fil lil kull pixel scanline mill pixel. 393 00:32:24,490 --> 00:32:29,860 Ħlief issa, minflok sempliċiment jinbidlu l-valuri bħal għamilna fil whodunit, 394 00:32:29,860 --> 00:32:37,980 dak li rridu nagħmlu huwa li rridu li tikteb fil-pixels multipli 395 00:32:37,980 --> 00:32:43,580 sakemm n tagħna hija akbar minn 1. 396 00:32:43,580 --> 00:32:47,110 >> Imbagħad dak li rridu nagħmlu huwa li rridu stretch orizzontalment minn n, 397 00:32:47,110 --> 00:32:50,490 kif ukoll stretch vertikalment mill n. 398 00:32:50,490 --> 00:32:52,710 Kif jista 'nagħmlu dan? 399 00:32:52,710 --> 00:32:56,890 Say n tiegħek huwa 2 u ikollok din infile mogħtija. 400 00:32:56,890 --> 00:32:58,730 Cursor tiegħek se tibda fl-ewwel waħda, 401 00:32:58,730 --> 00:33:03,530 u dak li inti trid tagħmel jekk n hija 2, inti tixtieq li jistampaw fi 2 minn dawn. 402 00:33:03,530 --> 00:33:05,490 Allura inti print fi 2 minn dawn. 403 00:33:05,490 --> 00:33:10,830 Imbagħad cursor tiegħek se jimxu lejn il-pixel li jmiss, li huwa l-waħda ħamra, 404 00:33:10,830 --> 00:33:18,400 u li għaddej biex jistampa 2 ta 'dawk dawk aħmar, tannettiha fuq dak li għandu jsir qabel. 405 00:33:18,400 --> 00:33:26,280 Imbagħad il-cursor se timxi mal-pixel li jmiss u iġbed 2 ta 'dawn. 406 00:33:26,280 --> 00:33:37,180 Jekk inti tħares lura lejn il-qafas copy.c, dak li dan ma dritt hawn 407 00:33:37,180 --> 00:33:42,830 huwa joħloq każ ġdid ta 'triple RGB, varjabbli ġdida msejħa tripla. 408 00:33:42,830 --> 00:33:50,500 U hawn meta jgħid fiha, jgħid mill-infile 1 RGBTRIPLE 409 00:33:50,500 --> 00:33:53,470 u taħżnu ġewwa ta 'dak il-varjabbli triplu. 410 00:33:53,470 --> 00:33:57,590 Mela allura inti fil-fatt ikollhom varjabbli li jirrappreżenta lil dak pixel partikolari. 411 00:33:57,590 --> 00:34:05,290 Imbagħad meta tikteb, dak li inti tista 'tixtieq li tagħmel hu li encase-dikjarazzjoni fwrite ġo għal loop 412 00:34:05,290 --> 00:34:11,080 li jikteb fis outfile tiegħek kemm drabi meħtieġa. 413 00:34:17,449 --> 00:34:20,100 Dak sempliċi biżżejjed. 414 00:34:20,200 --> 00:34:27,590 Just bażikament irrepeti l-proċess bil-miktub n numru ta 'drabi li iskala hija orizzontalment. 415 00:34:27,590 --> 00:34:32,969 >> Imma mbagħad irridu niftakru li ikkuttunar tagħna huwa se jibdlu. 416 00:34:47,350 --> 00:34:53,020 Preċedentement, ngħidu aħna kienet xi ħaġa ta 'tul 3. 417 00:34:53,020 --> 00:35:00,130 Imbagħad aħna se żid ftit fil kemm ikkuttunar? Just wieħed aktar li jagħmilha multiplu ta '4. 418 00:35:00,130 --> 00:35:10,480 Imma ngħid aħna qed skalar din id-dehra partikolari billi n = 2. 419 00:35:10,480 --> 00:35:16,300 Allura mbagħad kif ħafna pixels blu kieku aħna għandna fl-aħħar? Aħna jkollhom 6. 420 00:35:16,300 --> 00:35:21,470 1, 2, 3, 4, 5, 6. Kull dritt. 421 00:35:21,470 --> 00:35:26,580 6 mhijiex multiplu ta '4. X'inhu l-eqreb multiplu ta '4? Li għaddej biex tkun 8. 422 00:35:26,580 --> 00:35:33,200 Allura aħna qed attwalment għaddejjin li jkollha 2 karattri ta 'ikkuttunar hemmhekk. 423 00:35:33,200 --> 00:35:38,720 >> Hawn xi ħadd ftakar jekk ikollna formula biex tikkalkula ikkuttunar 424 00:35:38,720 --> 00:35:41,350 u fejn li jista 'jkun? 425 00:35:41,350 --> 00:35:45,160 [Rispons inaudible student] >> Yeah, copy.c. Dritt. 426 00:35:45,160 --> 00:35:49,800 Hemm formula fil copy.c biex jikkalkulaw kemm ikkuttunar għandek 427 00:35:49,800 --> 00:35:53,810 jingħata wisa partikolari ta 'l-immaġini Bitmap. 428 00:35:53,810 --> 00:36:02,950 Mela allura li għaddej biex tkun utli meta jkollok bżonn li jiżdiedu fi ċertu ammont ta 'padding 429 00:36:02,950 --> 00:36:06,160 fil-fatt insemmu kemm ikkuttunar ikollok bżonn li jiżdiedu. 430 00:36:10,820 --> 00:36:15,850 Iżda wieħed nota, madankollu, huwa li inti tixtieq li tagħmel ċert li inti qed tuża l-daqs dritt. 431 00:36:15,850 --> 00:36:21,410 Just ikunu attenti għax int bażikament se tkun jittrattaw ma 'żewġ immaġini Bitmap. 432 00:36:21,410 --> 00:36:23,410 Inti tixtieq li tagħmel ċert li inti qed tuża l-waħda id-dritt. 433 00:36:23,410 --> 00:36:26,820 Meta inti qed jiġi kkalkulat l-ikkuttunar għall-outfile, trid tuża l-wisa 'tal-outfile 434 00:36:26,820 --> 00:36:29,860 u mhux il-wisa 'ta' qabel. 435 00:36:29,860 --> 00:36:37,240 >> Great. Dak it-tip ta jieħu ħsieb ta 'tiġbid dehra Bitmap kollu orizzontalment. 436 00:36:37,240 --> 00:36:41,290 Imma dak li rridu nagħmlu huwa attwalment stretch vertikalment kif ukoll. 437 00:36:41,290 --> 00:36:48,760 Din se tkun xi ftit delikati għaliex meta aħna ħadthom lest ikkupjar fila 438 00:36:48,760 --> 00:36:51,580 u bil-miktub li ringiela, cursor tagħna se tkun fl-aħħar. 439 00:36:51,580 --> 00:36:56,210 Allura jekk naqraw mill-ġdid, allura huwa biss se jinqraw mal-linja li jmiss. 440 00:36:56,210 --> 00:37:03,660 Allura dak li rridu nagħmlu huwa tip ta 'ssib xi mod ta' kkopjar dawk fillieri mill-ġdid 441 00:37:03,660 --> 00:37:12,500 jew sempliċiment tip li tittieħed dik ringiela u mbagħad riskrittura mill-ġdid. 442 00:37:14,380 --> 00:37:17,940 Kif I tip ta 'allużjoni għal, hemm ħafna modi differenti biex jagħmlu dan. 443 00:37:17,940 --> 00:37:23,040 What inti tista 'tagħmel huwa kif inti qed tmur permezz ta' u l-qari permezz tal-scanline partikolari 444 00:37:23,040 --> 00:37:28,560 u jinbidlu kif meħtieġ, allura it-tip ta 'maħżen kollha ta' dawk pixels fil-firxa. 445 00:37:28,560 --> 00:37:36,350 Imbagħad aktar tard inti taf li ghandek bzonn biex jistampa din array mill-ġdid, 446 00:37:36,350 --> 00:37:39,830 u għalhekk inti tista 'sempliċement jużaw dak array biex tagħmel dan. 447 00:37:39,830 --> 00:37:44,500 Mod ieħor biex tagħmel dan huwa li inti tista 'kopja isfel filliera waħda, 448 00:37:44,500 --> 00:37:47,950 jifhmu li inti jeħtieġ li kopja li għal darb'oħra, hekk fil-fatt jimxu cursor tiegħek, 449 00:37:47,950 --> 00:37:50,950 u li għaddej biex tkun qed tuża l fseek metodu. 450 00:37:50,950 --> 00:37:56,410 Inti tista 'timxi cursor tiegħek it-triq kollha lura u mbagħad irrepeti l-proċess kopja mill-ġdid. 451 00:37:56,410 --> 00:38:03,960 >> Mela jekk in-numru ta 'skalar tagħna huwa n, allura kif ħafna drabi ikun rridu mmorru lura 452 00:38:03,960 --> 00:38:10,500 u jikteb linja? >> [Student] n - 1. >> Yeah, perfetta. n - 1. 453 00:38:10,500 --> 00:38:14,390 Aħna ghamilt darba diġà, hekk allura aħna ser jridu irrepeti l-proċess tmur lura 454 00:38:14,390 --> 00:38:17,460 n - 1 ammont ta 'drabi. 455 00:38:22,730 --> 00:38:25,860 Okay. Allura hemm ikollok funzjoni resize tiegħek. 456 00:38:25,860 --> 00:38:34,360 >> Issa nistgħu nibdew għal parti verament gost, pset favorit tiegħi, li huwa Recover. 457 00:38:34,360 --> 00:38:39,580 Minflok bitmaps, dan iż-żmien aħna qed jittrattaw ma JPEGs. 458 00:38:39,580 --> 00:38:43,370 Aħna fil-fatt ma jingħatawx fajl biss ta JPEGs, 459 00:38:43,370 --> 00:38:46,600 aħna qed jingħataw bażikament format prima karta tal-memorja. 460 00:38:46,600 --> 00:38:51,790 U hekk dan fih daqsxejn ta 'valuri informazzjoni u taż-żibel fil-bidu, 461 00:38:51,790 --> 00:38:57,240 u mbagħad jibda u għandu mazz ta 'fajls JPEG. 462 00:38:57,240 --> 00:39:03,430 Madankollu, aħna qed jingħataw kard fejn konna mħassra-ritratti; 463 00:39:03,430 --> 00:39:08,300 essenzjalment, konna minsija fejn l-ritratti jinsabu fi ħdan il-karta. 464 00:39:08,300 --> 00:39:12,770 Mela allura kompitu tagħna fil Jirkupraw huwa li jmorru permezz ta 'dan il-format karta 465 00:39:12,770 --> 00:39:16,500 u ssib dawk l-istampi mill-ġdid. 466 00:39:16,500 --> 00:39:23,990 >> Fortunatament, l-istruttura tal-fajls JPEG u l-fajl biljett huwa daqsxejn utli. 467 00:39:23,990 --> 00:39:28,850 Huwa żgur seta 'kien daqsxejn delikati li kieku ma kienx f'dan il-format partikolari. 468 00:39:28,850 --> 00:39:40,160 Kull fajl JPEG attwalment jibda ma 'żewġ sekwenzi possibbli, elenkati hawn fuq. 469 00:39:40,160 --> 00:39:42,970 Bażikament, kull meta għandek fajl JPEG ġdid, 470 00:39:42,970 --> 00:39:52,720 jibda jew mal-sekwenza ffd8 ffe0 jew l-ieħor, ffd8 ffe1. 471 00:39:52,720 --> 00:39:59,530 Ħaġa oħra utli li tkun taf li JPEGs huma maħżuna contiguously. 472 00:39:59,530 --> 00:40:03,380 Allura kull meta wieħed fajl JPEG jispiċċa, l-oħra wieħed jibda. 473 00:40:03,380 --> 00:40:07,070 Allura ma jkunx hemm xi tip ta 'fil-bejn il-valuri hemmhekk. 474 00:40:07,070 --> 00:40:15,510 Ladarba inti hit-bidu ta 'JPEG, jekk inti stajt diġà ġiet qari JPEG, 475 00:40:15,510 --> 00:40:21,800 inti taf li inti ħadthom laqat il-tarf ta 'dik ta' qabel u l-bidu ta 'dak li jmiss. 476 00:40:21,800 --> 00:40:25,890 >> Biex it-tip ta Ħares dan, I għamel skematika. 477 00:40:25,890 --> 00:40:36,910 Ħaġa oħra dwar JPEGs hija li nistgħu jaqrahom fil-sekwenzi ta '512 bytes fi żmien, 478 00:40:36,910 --> 00:40:39,380 bl-istess mod mal-bidu tal-biljett. 479 00:40:39,380 --> 00:40:43,370 Aħna ma bżonn li jiġu eżaminata kull byte wieħed minħabba li terda. 480 00:40:43,370 --> 00:40:48,200 Allura minflok, dak li nistgħu nagħmlu huwa attwalment biss tinqara 512 bytes kull darba 481 00:40:48,200 --> 00:40:54,700 u mbagħad, minflok ta 'kontroll fl bejn dawk f'dawk flieli ftit żgħira, 482 00:40:54,700 --> 00:40:58,640 nistgħu biss tivverifika l-bidu ta 'l-bytes 512. 483 00:40:58,640 --> 00:41:02,570 Essenzjalment, f'dan il-istampa, dak li tara li fil-bidu tal-biljett, 484 00:41:02,570 --> 00:41:08,700 inti għandek valuri li ma humiex verament rilevanti għall-JPEGs reali nfushom. 485 00:41:08,700 --> 00:41:15,830 Imma mbagħad dak li għandi hija stilla li jindika wieħed mill-sekwenzi 2 jibdew għal JPEG. 486 00:41:15,830 --> 00:41:19,910 Allura meta inti tara stilla, inti taf li għandek fajl JPEG. 487 00:41:19,910 --> 00:41:25,030 U mbagħad kull fajl JPEG se tkun xi multiplu ta '512 bytes 488 00:41:25,030 --> 00:41:27,880 iżda mhux neċessarjament l-istess multipli. 489 00:41:27,880 --> 00:41:32,050 Il-mod li inti taf li inti stajt hit ieħor JPEG hija jekk inti hit ieħor stilla, 490 00:41:32,050 --> 00:41:39,090 ieħor sekwenza inizjali ta 'bytes. 491 00:41:39,090 --> 00:41:43,330 Imbagħad dak li għandek hawnhekk huwa inti għandek l-fajl JPEG aħmar jkompli sakemm inti hit stilla, 492 00:41:43,330 --> 00:41:45,150 li hija indikata bil-kulur ġdid. 493 00:41:45,150 --> 00:41:48,510 Inti tkompli u allura inti hit ieħor star, inti hit ieħor JPEG, 494 00:41:48,510 --> 00:41:50,590 inti tkompli it-triq kollha sa l-aħħar. 495 00:41:50,590 --> 00:41:53,180 Int lejn l-istampa aħħar hawnhekk, il-wieħed roża. 496 00:41:53,180 --> 00:41:58,220 Inti tmur sa l-aħħar sakemm inti hit l-aħħar ta 'karattru fajl. 497 00:41:58,220 --> 00:42:00,820 Din se tkun verament utli. 498 00:42:00,820 --> 00:42:03,170 >> A takeaways ewlenin ftit hawn: 499 00:42:03,170 --> 00:42:06,670 Il-fajl biljett ma tibda bil-JPEG, 500 00:42:06,670 --> 00:42:13,350 iżda ladarba JPEG tibda, kollha tal-JPEGs huma maħżuna ħdejn xulxin ma 'xulxin. 501 00:42:17,520 --> 00:42:20,420 >> Xi pseudocode għall-Jirkupra. 502 00:42:20,420 --> 00:42:22,570 L-ewwel, aħna qed tmur biex tiftaħ fajl karta tagħna, 503 00:42:22,570 --> 00:42:27,500 u li għaddej biex tkun qed tuża fajl tagħna I / O funzjonijiet. 504 00:42:27,500 --> 00:42:32,430 Aħna ser jirrepetu l-proċess li ġej sakemm aħna ħadthom laħqu t-tmiem tal-fajl. 505 00:42:32,430 --> 00:42:36,450 Aħna ser jinqara 512 bytes kull darba. 506 00:42:36,450 --> 00:42:39,180 U dak li għidt hawnhekk hija li aħna qed tmur biex jaħżnuh fil-buffer, 507 00:42:39,180 --> 00:42:46,230 hekk bażikament iżżomm fuq għal dawk il-bytes 512 sa nafu eżattament x'għandhom jagħmlu magħhom. 508 00:42:46,230 --> 00:42:50,300 Imbagħad dak li rridu nagħmlu huwa li rridu li tikkontrolla jekk konna hit stilla jew le. 509 00:42:50,300 --> 00:42:57,960 Jekk konna hit stilla, jekk konna hit wieħed mill-sekwenzi tal-bidu, 510 00:42:57,960 --> 00:42:59,980 allura aħna nafu li konna hit fajl JPEG ġdid. 511 00:42:59,980 --> 00:43:08,860 Dak li aħna ser trid tagħmel hu li aħna qed tmur jridu toħloq fajl ġdid fl-direttorju pset4 tagħna 512 00:43:08,860 --> 00:43:14,480 biex ikomplu jagħmlu dan il-fajl. 513 00:43:14,480 --> 00:43:18,220 Iżda wkoll, jekk aħna stajt diġà għamlet JPEG qabel, 514 00:43:18,220 --> 00:43:25,620 allura aħna tixtieq li ttemm dan il-fajl u imbotta lill-folder pset4, 515 00:43:25,620 --> 00:43:29,780 fejn aħna ser ikollhom dan il-fajl maħżuna għaliex jekk aħna ma jispeċifikaw li konna ntemmet dan il-fajl JPEG, 516 00:43:29,780 --> 00:43:37,290 allura aħna ser bażikament ikollhom ammont indeterminat. Il JPEGs qatt se jintemm. 517 00:43:37,290 --> 00:43:40,840 Allura aħna tixtieq li tagħmel ċert li meta aħna qed qari fl għal fajl JPEG u l-kitba li, 518 00:43:40,840 --> 00:43:46,590 irridu speċifikament tagħlaq li sabiex tiftaħ il-wieħed li jmiss. 519 00:43:46,590 --> 00:43:48,430 Aħna ser jridu jiċċekkjaw diversi affarijiet. 520 00:43:48,430 --> 00:43:52,880 Aħna rridu li jivverifika jekk aħna qed fil-bidu ta 'JPEG ġdid ma' buffer tagħna 521 00:43:52,880 --> 00:43:56,780 u wkoll jekk aħna diġà sabu JPEG qabel 522 00:43:56,780 --> 00:44:03,930 minħabba li se tbiddel il-proċess tiegħek ftit. 523 00:44:03,930 --> 00:44:07,880 Mela allura wara li inti tmur permezz-triq kollha u inti hit l-aħħar tal-fajl, 524 00:44:07,880 --> 00:44:11,570 allura dak li inti taf tixtieq tagħmel hu li tkun taf tixtieq li tagħlaq il-fajls kollha li huma bħalissa miftuħa. 525 00:44:11,570 --> 00:44:14,100 Li probabbilment se jkunu l-fajl JPEG aħħar li għandek, 526 00:44:14,100 --> 00:44:18,930 kif ukoll tal-fajl biljett li inti kont qed jittrattaw. 527 00:44:21,940 --> 00:44:28,670 >> L-ostaklu l-aħħar li għandna bżonn biex jindirizzaw hija kif fil-fatt jagħmel fajl JPEG 528 00:44:28,670 --> 00:44:31,950 u kif fil-fatt timbotta lill-folder. 529 00:44:33,650 --> 00:44:39,850 Il pset teħtieġ li kull JPEG li inti ssib tkun fil-format li ġej, 530 00:44:39,850 --> 00:44:43,990 fejn inti għandek l-għadd. jpg. 531 00:44:43,990 --> 00:44:50,750 In-numru, anke jekk huwa 0, nagħmlu sejħa hija 000.jpg. 532 00:44:50,750 --> 00:44:55,730 Kull meta inti ssib JPEG fil-programm tiegħek, 533 00:44:55,730 --> 00:44:58,040 int tmur jridu isem fl-ordni li huwa sab. 534 00:44:58,040 --> 00:44:59,700 Xi jfisser dan? 535 00:44:59,700 --> 00:45:03,530 Għandna bżonn li tip ta 'jżommu rekord ta' kemm konna sabet 536 00:45:03,530 --> 00:45:08,680 u dak in-numru ta 'kull JPEG għandu jkun. 537 00:45:08,680 --> 00:45:13,800 Hawnhekk aħna qed tmur biex jieħdu vantaġġ tal-funzjoni sprintf. 538 00:45:13,800 --> 00:45:17,480 Simili għall printf, li biss tip ta 'stampi ta' valur barra fil-terminal, 539 00:45:17,480 --> 00:45:23,910 sprintf prints l-fajl barra fil-folder. 540 00:45:23,910 --> 00:45:30,870 U hekk dak li dan se tagħmel jekk kelli sprintf, titolu, u allura l-sekwenza hemm, 541 00:45:30,870 --> 00:45:36,660 ikun jistampa 2.jpg. 542 00:45:36,660 --> 00:45:41,020 Jekk wieħed jassumi li stajt magħluqa fajls tiegħi korrettament, 543 00:45:41,020 --> 00:45:47,210 li fihom il-fajl li I kien miktub out. 544 00:45:47,210 --> 00:45:50,320 Iżda ħaġa waħda hija li l-kodiċi li għandi hawn 545 00:45:50,320 --> 00:45:53,360 ma pjuttost jissodisfaw dak l-pset teħtieġ. 546 00:45:53,360 --> 00:46:02,410 Il pset jeħtieġ li l-fajl JPEG 2 għandhom jissemmew 002 minflok sempliċiment 2. 547 00:46:02,410 --> 00:46:09,160 Allura meta inti jistampa l-isem, allura forsi inti tista 'tixtieq li jibdlu l-placeholder ftit. 548 00:46:09,160 --> 00:46:18,140 >> Hawn xi ħadd ftakar kif aħna jippermettu spazji żejda meta aħna jistampaw xi ħaġa? 549 00:46:18,140 --> 00:46:22,530 Yeah. >> [Student] Inti tpoġġi 3 bejn is-sinjal fil-mija u l-2. >> Yeah, perfetta. 550 00:46:22,530 --> 00:46:25,610 Int ser ikollok tpoġġi 3 f'dan il-każ għaliex irridu spazju għall-3. 551 00:46:25,610 --> 00:46:32,590 3d% probabbilment jagħtuk 002.jpg minflok 2. 552 00:46:32,590 --> 00:46:40,120 L-ewwel argument fil-funzjoni sprintf huwa attwalment firxa char, 553 00:46:40,120 --> 00:46:42,520 li aħna preċedentement kienu jafu kif kordi. 554 00:46:42,520 --> 00:46:50,700 Dawk rieda, tip ta 'aktar bħal ħażna temporanja, biss jaħżnu l-sekwenza riżultanti. 555 00:46:50,700 --> 00:46:54,950 Inti mhux se verament tkun jittrattaw ma 'dan, iżda inti għandek bżonn li din tiġi inkluża. 556 00:46:54,950 --> 00:47:00,710 >> Jafu li kull isem ta 'fajl għandha l-għadd, li jieħu sa tliet karattri, 557 00:47:00,710 --> 00:47:06,770 u mbagħad. jpg, kemm jekk dan array jkun? 558 00:47:09,070 --> 00:47:14,310 Tarmi out numru. Kemm karattri fit-titolu, fl-isem? 559 00:47:18,090 --> 00:47:26,320 Allura hemm 3 hashtags, perjodu, jpg. >> [Student] 7. >> 7. Mhux pjuttost. 560 00:47:26,320 --> 00:47:32,000 Aħna qed tmur jridu 8 għaliex irridu li jippermetti l-terminatur null ukoll. 561 00:47:45,340 --> 00:47:49,730 >> Fl-aħħarnett, biss biex tiġbed l-proċess li inti ser tkun qiegħda tagħmel biex jirkupraw, 562 00:47:49,730 --> 00:47:55,420 għandek xi informazzjoni bidu. 563 00:47:55,420 --> 00:48:02,460 Inti tkompli sakemm issib il-bidu ta 'fajl JPEG, 564 00:48:02,460 --> 00:48:07,900 u li jista 'jkun jew wieħed minn żewġ sekwenzi tal-bidu. 565 00:48:07,900 --> 00:48:12,510 Inti żżomm fuq qari. Kull slash hawn tirrappreżenta 512 bytes. 566 00:48:12,510 --> 00:48:22,630 Inti żżomm fuq qari, iżommu dwar qari sakemm inti tiltaqa ieħor sekwenza tibda. 567 00:48:22,630 --> 00:48:29,790 Ladarba inti tkun li, inti tispiċċa l-JPEG attwali - f'dan il-każ, huwa l-waħda ħamra, 568 00:48:29,790 --> 00:48:31,030 sabiex inti tixtieq li ttemm dan. 569 00:48:31,030 --> 00:48:35,540 Inti tixtieq li sprintf-isem ta 'dik fil-folder pset4 tiegħek, 570 00:48:35,540 --> 00:48:41,580 imbagħad inti tixtieq li tiftaħ JPEG ġdid u imbagħad żomm fuq qari 571 00:48:41,580 --> 00:48:46,370 sakemm inti tiltaqa li jmiss. 572 00:48:46,370 --> 00:48:49,040 Żomm fuq qari, iżommu qari, 573 00:48:49,040 --> 00:48:56,290 u mbagħad finalment, eventwalment, int ser jilħqu t-tmiem tal-fajl, 574 00:48:56,290 --> 00:49:00,360 u sabiex tkun taf tixtieq li tagħlaq il-JPEG aħħar li inti kienu qed jaħdmu ma ', 575 00:49:00,360 --> 00:49:08,380 sprintf li fil-folder pset4 tiegħek, u mbagħad tħares lejn kollha ta 'l-istampi li inti stajt gotten. 576 00:49:08,380 --> 00:49:12,050 Dawk ritratti huma attwalment ritratti ta 'CS50 persunal, 577 00:49:12,050 --> 00:49:16,430 u għalhekk dan huwa fejn il-parti gost bonus tal-pset tiġi fi 578 00:49:16,430 --> 00:49:26,310 hija li inti qed jikkompetu fit-taqsimiet tiegħek biex issib l-TFS fl-istampi 579 00:49:26,310 --> 00:49:34,610 u jieħdu ritratti magħhom li tipprova li inti ghamilt l pset 580 00:49:34,610 --> 00:49:37,030 u sabiex inti tista 'tara li l-membri tal-persunal huma fl-istampi. 581 00:49:37,030 --> 00:49:41,510 Mela allura inti tieħu ritratti mal-persunal. Kultant inti ser ikollok chase them down. 582 00:49:41,510 --> 00:49:44,680 Probabbilment xi wħud minnhom se jippruvaw jimxu 'l bogħod mill inti. 583 00:49:44,680 --> 00:49:47,320 Għandek tieħu ritratti magħhom. 584 00:49:47,320 --> 00:49:51,190 Dan huwa għaddej. Mhuwiex dovut meta l-pset huwa dovut. 585 00:49:51,190 --> 00:49:53,340 L-iskadenza se jitħabbru fil-spec. 586 00:49:53,340 --> 00:49:58,060 Imbagħad flimkien mat-taqsima tiegħek, liema taqsima tieħu l-istampi l-aktar 587 00:49:58,060 --> 00:50:04,430 mal-membri tal-persunal l-aktar se jirbaħ premju pjuttost tal-biża. 588 00:50:04,430 --> 00:50:08,890 Dak it-tip ta 'inċentiv biex tikseb pset4 tiegħek spiċċa jista' jkun malajr 589 00:50:08,890 --> 00:50:10,820 għaliex imbagħad inti tista 'tikseb l-ħidma 590 00:50:10,820 --> 00:50:14,570 kaċċa stabbiliti-membri kollha tal-persunal differenti CS50. 591 00:50:14,570 --> 00:50:17,500 Li mhux obbligatorju, għalkemm, hekk darba ikollok l-istampi, 592 00:50:17,500 --> 00:50:20,310 allura inti lest ma pset4. 593 00:50:20,310 --> 00:50:23,970 >> U jien lest ma Walkthrough 4, hekk nirringrazzjakom ilkoll għall ġejjin. 594 00:50:23,970 --> 00:50:29,330 Xorti tajba mal-forensika. [Applause] 595 00:50:29,330 --> 00:50:31,000 [CS50.TV]