1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON HIRSCHHORN: Welcome, mindenki, a 6. hét. 3 00:00:09,840 --> 00:00:14,790 Örülök, hogy látlak minden él és virul után Kvíz 0, mert tudom, hogy 4 00:00:14,790 --> 00:00:15,810 egy kicsit durva. 5 00:00:15,810 --> 00:00:18,370 De szerencsére, mindenkinek volt hihetetlenül jól. 6 00:00:18,370 --> 00:00:21,680 És ez csodálatos. 7 00:00:21,680 --> 00:00:25,840 Ha az én részben adtam a legtöbb A biztonsági másolatot a vetélkedők már. 8 00:00:25,840 --> 00:00:28,050 >> Néhány, én találkozom óra után. 9 00:00:28,050 --> 00:00:32,360 És ha egy kiterjesztés hallgatói és még nem kapta meg a kvíz vissza 10 00:00:32,360 --> 00:00:35,490 Mégis, a TF valószínűleg dolgozik rajta és a besorolási, és akkor kap vissza 11 00:00:35,490 --> 00:00:36,490 nem sokkal. 12 00:00:36,490 --> 00:00:39,650 Szóval a kiterjesztés a diákok, akik nézi most - remélhetőleg él - 13 00:00:39,650 --> 00:00:42,880 Én lesz a vetélkedők röviddel is. 14 00:00:42,880 --> 00:00:45,670 >> A program ma a következő. 15 00:00:45,670 --> 00:00:50,170 Először fogunk menni át néhány erőforrások CS50 biztosít az Ön számára. 16 00:00:50,170 --> 00:00:54,590 Fogunk menni át kvíz 0 következő, és Én válaszoljon a kérdésekre bárki 17 00:00:54,590 --> 00:00:57,360 mintegy különösebb problémát. 18 00:00:57,360 --> 00:01:02,050 És akkor mi lesz majd vége Fájl I / O és a probléma meg 5. 19 00:01:02,050 --> 00:01:07,360 Az utolsó két téma lesz fel a nagy részét részben ma. 20 00:01:07,360 --> 00:01:11,680 >> Tettem ezt a listát minden héten, mint a emlékeztető mindenkinek, de az alapvető 21 00:01:11,680 --> 00:01:14,650 rész, már csak 90 perc alatt - mi nem képes fedezni mindent, amit 22 00:01:14,650 --> 00:01:16,280 Szeretném, hogy fedezze a srácok. 23 00:01:16,280 --> 00:01:21,170 De van egy csomó források meg, hogy merítsen, ahogy megismerjük 24 00:01:21,170 --> 00:01:24,000 az anyag és a munka révén a problémát állítja. 25 00:01:24,000 --> 00:01:30,810 >> Emlékeztető, hogy van online szöveg box, létre, hogy töltse ki, ha 26 00:01:30,810 --> 00:01:33,250 bármilyen észrevételed van nekem, mind a pozitív, mind 27 00:01:33,250 --> 00:01:35,180 konstruktív, a részt. 28 00:01:35,180 --> 00:01:38,600 Az URL fekszik itt. 29 00:01:38,600 --> 00:01:43,250 Ezért kérjük, szánjon egy kis időt, ha bármilyen visszajelzés, legyen ez a rész, 30 00:01:43,250 --> 00:01:48,030 vagy után, vagy miután nézni a videót az interneten, hogy nekem a véleményét. 31 00:01:48,030 --> 00:01:52,100 Igazán hálás vagyok minden, és az egészet. 32 00:01:52,100 --> 00:01:55,730 >> Szóval már rendelkezik kis beszélgetések sok az én 33 00:01:55,730 --> 00:01:59,350 a diákok egész héten - ahogy kéz vissza vetélkedők, beszél a 34 00:01:59,350 --> 00:02:01,480 Természetesen, látva, hogy hogyan csinálod. 35 00:02:01,480 --> 00:02:05,120 És egy témát jön át, és át beszél - a 36 00:02:05,120 --> 00:02:05,660 különösen - 37 00:02:05,660 --> 00:02:07,710 probléma beállítja. 38 00:02:07,710 --> 00:02:13,090 És én zárt, hogy a téma a táblán most. 39 00:02:13,090 --> 00:02:16,630 >> Lényegében van egy különbség között fordult a valamit, ami 40 00:02:16,630 --> 00:02:19,590 helyesen tette, és valami hogy történik is. 41 00:02:19,590 --> 00:02:22,920 A legtöbb ember már csinál fantasztikus szempontjából a korrektség - 42 00:02:22,920 --> 00:02:25,460 5-ös vagy 4-es minden psets. 43 00:02:25,460 --> 00:02:27,930 A legtöbb ember egyre azokat minden alkalommal. 44 00:02:27,930 --> 00:02:31,150 >> Azonban csak azért, mert tettél valamit jól nem jelenti azt, hogy már 45 00:02:31,150 --> 00:02:34,450 történt valami olyan elegánsan, vagy hatékony, vagy tisztán, mint te 46 00:02:34,450 --> 00:02:35,270 tehette. 47 00:02:35,270 --> 00:02:36,790 És ez az, amit a tervezés - 48 00:02:36,790 --> 00:02:39,230 és kisebb mértékben, a stílus - 49 00:02:39,230 --> 00:02:40,450 tengely számára. 50 00:02:40,450 --> 00:02:45,130 Így vagyok rámenős benneteket, és más TFs nyomja srácok, hogy ne csak a turn 51 00:02:45,130 --> 00:02:48,320 A dolgok, amelyek a helyes, de viszont A dolgok kódolva. 52 00:02:48,320 --> 00:02:53,060 >> Nem csinál felesleges hurkok, Nem újratervezi változókat, ha 53 00:02:53,060 --> 00:02:53,800 Önnek nem kell. 54 00:02:53,800 --> 00:02:58,520 Például, ha visszatekintünk a probléma meg 4, ha forgalomba a tégla a 55 00:02:58,520 --> 00:03:03,070 képernyőn minden sorban - minden tégla a adott sor ugyanolyan y koordináta - 56 00:03:03,070 --> 00:03:04,390 azonos magasságban koordináta. 57 00:03:04,390 --> 00:03:07,930 >> Annak érdekében, hogy y-koordináta nem kell számítható belül a belső 58 00:03:07,930 --> 00:03:11,070 egymásba ágyazott FOR ciklus, amit valószínűleg használt kell elhelyezni ezeket a tégla a képernyőn. 59 00:03:11,070 --> 00:03:14,030 Csak ki kell számítani minden alkalommal, amikor váltott a sorban, vagy 60 00:03:14,030 --> 00:03:15,200 elindult lefelé a sorban. 61 00:03:15,200 --> 00:03:19,760 Tehát mondjuk ha van 10 téglákat egy sorban, minden tégla lehet ugyanazt 62 00:03:19,760 --> 00:03:22,260 y-koordináta, és az y-koordináta egyszerűen kiszámítható 63 00:03:22,260 --> 00:03:23,550 egyszer az összes ilyen. 64 00:03:23,550 --> 00:03:27,810 >> Ez nem kell kiszámítani 10 időre, sem csinálja kiszámítása során figyelembe kell 65 00:03:27,810 --> 00:03:30,220 történik az aktuális függvényhívás - 66 00:03:30,220 --> 00:03:33,020 Az új gracked függvényhívás. 67 00:03:33,020 --> 00:03:37,820 Tehát, ha ez egy kicsit zavaró a te, még általánosságban, a dolgok, 68 00:03:37,820 --> 00:03:40,730 Nem kell, hogy megtörténjen minden egyes alkalommal megy egy ciklusban nem lehet 69 00:03:40,730 --> 00:03:42,900 betenni a FOR ciklus, és ne történik minden alkalommal, amikor 70 00:03:42,900 --> 00:03:44,080 a FOR ciklus. 71 00:03:44,080 --> 00:03:49,270 >> Egy másik jó design példa láttunk A 3. hét 15, meg tudná tartani 72 00:03:49,270 --> 00:03:50,500 követni az nulla. 73 00:03:50,500 --> 00:03:53,600 Tehát, ha inicializálni a fórumon, menteni - egy globális változó, talán - 74 00:03:53,600 --> 00:03:56,140 Az x és y-koordinátája nulla. 75 00:03:56,140 --> 00:03:57,520 És akkor, amikor - 76 00:03:57,520 --> 00:04:00,310 a mozgás funkció, amikor csinál Sikeres lépés, frissíti a 77 00:04:00,310 --> 00:04:02,040 helyét a nulla. 78 00:04:02,040 --> 00:04:06,240 >> Ez azt menteni attól kelljen egymásba ágyazott FOR ciklusok, hogy nézze át a 79 00:04:06,240 --> 00:04:10,700 fórumon minden alkalommal a lépés funkció és keresse meg a nulla, vagy keresse meg a cserép, 80 00:04:10,700 --> 00:04:12,460 és ellenőrizze, mi a következő lépés, hogy azt. 81 00:04:12,460 --> 00:04:16,329 Ehelyett, akkor a helyét a nulla, akkor csak nézd felett, alatt, 82 00:04:16,329 --> 00:04:21,160 és a bal és jobb oldalán, hogy megtalálják a cserép, amit keresett. 83 00:04:21,160 --> 00:04:24,970 >> Így tekintve a programok vagyunk írás, ők soha nem elég nagy 84 00:04:24,970 --> 00:04:28,580 hogy ezek közül néhány tervezési döntések nagyon fog akadályozza a 85 00:04:28,580 --> 00:04:31,670 programot, vagy hogy ez fut lassabban, vagy talán még elfogy a memória. 86 00:04:31,670 --> 00:04:35,030 De még mindig nyomja a srácok írni, elegáns és 87 00:04:35,030 --> 00:04:36,450 hatékony kódot, amennyire csak lehetséges. 88 00:04:36,450 --> 00:04:39,910 >> Tehát, ha nem a végén írásban dolgokat hogy van egy lényegesen nagyobb 89 00:04:39,910 --> 00:04:44,660 köre, lesznek írva a jó tervezés amellett, hogy helyes-e. 90 00:04:44,660 --> 00:04:46,300 Így számos olyan van hozta, hogy ki. 91 00:04:46,300 --> 00:04:48,560 Ez olyasmi, amit keresünk - valami megyünk tovább 92 00:04:48,560 --> 00:04:49,840 nyomja meg srácok. 93 00:04:49,840 --> 00:04:52,460 >> Ha valaha is bármilyen kérdése van a kialakítása a program, nyugodtan 94 00:04:52,460 --> 00:04:56,870 hogy elérje a számomra, és örülök, hogy séta a programban veled, 95 00:04:56,870 --> 00:05:01,320 és rámutatni néhány a tervezés döntés amit tett, és ad egy kis 96 00:05:01,320 --> 00:05:06,240 javaslatokat, hogyan is jobb tervezési döntéseket. 97 00:05:06,240 --> 00:05:08,870 >> Így fogunk lépni hogy beszélünk Quiz 0-ra. 98 00:05:08,870 --> 00:05:11,300 Mielőtt ezt tesszük, nem bárki bármilyen kérdése van, milyen 99 00:05:11,300 --> 00:05:14,252 Én már lefedett eddig? 100 00:05:14,252 --> 00:05:21,500 >> [Zajt] 101 00:05:21,500 --> 00:05:22,750 >> JASON HIRSCHHORN: Hét másodperc. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Beszéljünk Kvíz 0 egy kicsit. 104 00:05:24,970 --> 00:05:26,700 A legtöbb van a kvíz 0 hátán. 105 00:05:26,700 --> 00:05:29,820 Ha nem, remélhetőleg emlékszik rá egy kicsit. 106 00:05:29,820 --> 00:05:34,770 De ha már megtette kvíz 0, akkor is hozzáférhetnek a PDF-online 107 00:05:34,770 --> 00:05:35,890 A minta oldatok. 108 00:05:35,890 --> 00:05:39,480 >> Van valakinek bármilyen kérdése van, mielőtt ugrunk a heti anyagot a 109 00:05:39,480 --> 00:05:41,520 egy adott probléma Quiz 0 - 110 00:05:41,520 --> 00:05:44,630 miért a válasz, mi az? 111 00:05:44,630 --> 00:05:47,255 Van valaki zavaros valamit? 112 00:05:47,255 --> 00:05:50,230 Akkor is, ha van a probléma van, de csak azt szeretném, hogy magyarázzam el, hogy egy kicsit 113 00:05:50,230 --> 00:05:52,640 több, boldog vagyok, hogy ezt most. 114 00:05:52,640 --> 00:05:57,800 >> Szóval kértek titeket felkészülni néhány 115 00:05:57,800 --> 00:05:59,440 gondolatok Quiz 0-ra. 116 00:05:59,440 --> 00:06:02,660 Tehát, aki szeretne minket kezdődött egy kérdést, vagy 117 00:06:02,660 --> 00:06:04,655 megjegyzést a kvíz 0-ra? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [PAPÍR susogó] 120 00:06:10,410 --> 00:06:11,470 >> JASON HIRSCHHORN: Nem mindenki nem tökéletesen. 121 00:06:11,470 --> 00:06:12,720 Szóval tudom [nevet] 122 00:06:12,720 --> 00:06:15,950 ott kell néhány kérdést a Quiz 0-ra. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 OK. 125 00:06:28,590 --> 00:06:29,210 Igen. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: 10. szám. 128 00:06:30,520 --> 00:06:33,560 >> JASON HIRSCHHORN: 10. szám. 129 00:06:33,560 --> 00:06:35,400 Melyik volt a 10-es számú? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: A - 131 00:06:35,840 --> 00:06:36,420 >> JASON HIRSCHHORN: I haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: Az include - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON HIRSCHHORN: Number 10 nyolc I - írásban nyolc-i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Igen. 136 00:06:42,980 --> 00:06:43,630 >> JASON HIRSCHHORN: OK. 137 00:06:43,630 --> 00:06:47,390 Így egy másik kérdés, hogy lehetett volna kérdeztem vagyok előrelátó? 138 00:06:47,390 --> 00:06:48,630 A válasz: igen. 139 00:06:48,630 --> 00:06:52,060 A részt, mielőtt a kvízt, megkérdeztem srácok kódolni mind a Sterling és a 140 00:06:52,060 --> 00:06:52,980 nyolc i. 141 00:06:52,980 --> 00:06:54,770 Mindketten történt jelenik meg a kvíz. 142 00:06:54,770 --> 00:06:57,510 Így remélhetőleg, fizetett figyelmet arra, hogy a. 143 00:06:57,510 --> 00:07:02,520 >> És ha már, akkor meg kellett volna Valószínűleg jól ezen a két. 144 00:07:02,520 --> 00:07:06,030 De nyolc-én, valójában nem kód az osztályban, de ez megint, 145 00:07:06,030 --> 00:07:07,500 kérte a kvíz. 146 00:07:07,500 --> 00:07:13,270 Tehát egy-két dolgot, hogy ügyelni kódolás nyolc i. 147 00:07:13,270 --> 00:07:17,320 Az első dolog, egy kérdés volt, hogy meg kell, hogy ellenőrizze, hogy a húr 148 00:07:17,320 --> 00:07:20,300 egyenlő volt a null. 149 00:07:20,300 --> 00:07:28,060 >> Néhány ember megpróbált ellenőrizni később a programban, ha s konzol voltam - 150 00:07:28,060 --> 00:07:30,940 így egy adott karaktert, hogy húr - egyenlő volt a null. 151 00:07:30,940 --> 00:07:35,600 De ne feledjük, hogy a null lényegében - ez jó, hogy gondolni 152 00:07:35,600 --> 00:07:39,100 null a nulla mutató - a mutató nullára - 153 00:07:39,100 --> 00:07:40,920 valahol a memóriában, ahol a soha nem lehet elérni. 154 00:07:40,920 --> 00:07:44,730 >> Tehát, ha valami egyenlő null, akkor tudja, hogy nem helyeztük üzembe, 155 00:07:44,730 --> 00:07:46,430 vagy nincs ott semmi. 156 00:07:46,430 --> 00:07:50,950 Tehát s egy char csillag, s konzol i egy char. 157 00:07:50,950 --> 00:07:57,410 Így van értelme összehasonlítani s null, de nem s konzol i null. 158 00:07:57,410 --> 00:07:59,390 De megint -, így ez volt az első dolog, hogy meg kellett volna tennie - 159 00:07:59,390 --> 00:08:03,510 győződjön meg róla, hogy valóban van egy igazi húr. 160 00:08:03,510 --> 00:08:08,020 >> Ezután meg akart átmenni mindegyik karaktere. 161 00:08:08,020 --> 00:08:12,500 És azért, hogy olyan lesz, mint egy s konzol Én például, ha van a bejáró. 162 00:08:12,500 --> 00:08:17,250 És hogy ezt a karaktert, és a hogy a valós értéket. 163 00:08:17,250 --> 00:08:21,800 Ön azt tárolni, mint egy char, de Az ASCII értéke nulla - 164 00:08:21,800 --> 00:08:23,010 nulla, mint egy karakter - 165 00:08:23,010 --> 00:08:25,450 valójában nem az egész nulla. 166 00:08:25,450 --> 00:08:28,700 Ez egy másik számot, amit nézz fel az ASCII táblázatban. 167 00:08:28,700 --> 00:08:30,790 >> Tehát az egyik módja annak, hogy javítani, hogy - talán a legjobb módja annak, hogy javítsa a 168 00:08:30,790 --> 00:08:33,760 hogy - a kivonni belőle a karakter értékét - 169 00:08:33,760 --> 00:08:35,140 nulla, mint egy karakter. 170 00:08:35,140 --> 00:08:38,490 Tehát mínusz egy idézet, nulla, egy aposztróf. 171 00:08:38,490 --> 00:08:44,620 Ez megtesz minden szám van mint a char, és kap ez egyenlő 172 00:08:44,620 --> 00:08:46,720 A szám, mint a tényleges szám. 173 00:08:46,720 --> 00:08:50,300 >> És ez nagyon hasonló a megközelítés egy csomó ember volt a 174 00:08:50,300 --> 00:08:52,800 probléma meg 2, Caesar és Viginere - 175 00:08:52,800 --> 00:08:55,160 azok ciphers, ha voltak elforgatva. 176 00:08:55,160 --> 00:08:59,210 Így aztán itt van ez a szám nullától kilencig, akkor - attól függően, 177 00:08:59,210 --> 00:09:02,750 ahol megy a végső szám - meg kell szorozni az 178 00:09:02,750 --> 00:09:04,120 egy hatalom 10. 179 00:09:04,120 --> 00:09:07,340 >> Néhány ember költözött a vissza a elől, és meg kell szorozni az egyes 180 00:09:07,340 --> 00:09:08,940 számot a hatalom 10. 181 00:09:08,940 --> 00:09:11,160 Vannak, akik költözött Az előre-hátra - 182 00:09:11,160 --> 00:09:14,430 és így volt a legmagasabb Rendelési szám első - 183 00:09:14,430 --> 00:09:18,190 , és azok kivételével, amelyek a elleni globális változót. 184 00:09:18,190 --> 00:09:20,880 És akkor minden egyes alkalommal át a FOR loop, szaporodnak, hogy óriási a globális 185 00:09:20,880 --> 00:09:25,640 számláló változó 10, hogy a helyet a következő karakter. 186 00:09:25,640 --> 00:09:28,750 >> Szóval ez egy kicsit zavaros nélkül én írom a táblára. 187 00:09:28,750 --> 00:09:31,550 De a mintaoldatot áll az Ön rendelkezésére. 188 00:09:31,550 --> 00:09:32,870 De azok voltak a nagy dolgok kerestünk. 189 00:09:32,870 --> 00:09:36,400 Szintén győződjön meg arról, hogy minden egyéni jelleg valóban a 190 00:09:36,400 --> 00:09:39,780 karakter a nulla és kilenc, és nem más karakter, mint egy A, 191 00:09:39,780 --> 00:09:41,160 pl. 192 00:09:41,160 --> 00:09:43,150 >> Ezek voltak a dolgok, amit kerestünk az ebben a kérdésben. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Van, hogy a kérdésére? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Igen. 196 00:09:49,320 --> 00:09:50,240 >> JASON HIRSCHHORN: OK. 197 00:09:50,240 --> 00:09:53,940 Vannak más kérdések a kvíz 0-ra? 198 00:09:53,940 --> 00:09:55,440 Mi a fordítás? 199 00:09:55,440 --> 00:09:56,740 Mindenki összeállítása van? 200 00:09:56,740 --> 00:09:58,370 Nem. 201 00:09:58,370 --> 00:09:58,840 Ott volt - 202 00:09:58,840 --> 00:10:01,010 [Nevet] 203 00:10:01,010 --> 00:10:03,265 Bármilyen kérdése a fordítási folyamat? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Wow. 206 00:10:06,966 --> 00:10:11,090 >> [PAPÍR susogó] 207 00:10:11,090 --> 00:10:11,520 >> JASON HIRSCHHORN: Igen. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: A 7-es szám - véletlen? 210 00:10:14,140 --> 00:10:16,500 >> JASON HIRSCHHORN: Number 7. 211 00:10:16,500 --> 00:10:20,670 7-es számú volt, hogy egy véletlen egész szám. 212 00:10:20,670 --> 00:10:21,110 Kiváló. 213 00:10:21,110 --> 00:10:25,630 Szóval adott egy egész egy és b számokat, és azt szeretné, egy véletlen 214 00:10:25,630 --> 00:10:28,710 közötti egész szám, a és b. 215 00:10:28,710 --> 00:10:31,740 Mi is valójában írni ezt a a testület, mert ez az egyik 216 00:10:31,740 --> 00:10:33,320 volt egy sort - 217 00:10:33,320 --> 00:10:34,390 az egyik módja annak, hogy csináld. 218 00:10:34,390 --> 00:10:37,810 >> Szóval adott drand, mint a funkció tudtuk használni. 219 00:10:37,810 --> 00:10:38,820 És mit drand - 220 00:10:38,820 --> 00:10:40,290 feltételezve, hogy ez már kiemelt - 221 00:10:40,290 --> 00:10:42,316 mit drand vissza? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: Az úszó 0,0 és 1,0 közötti. 223 00:10:44,840 --> 00:10:45,530 >> JASON HIRSCHHORN: A szám - igen. 224 00:10:45,530 --> 00:10:47,910 A szám 0 és 1 között. 225 00:10:47,910 --> 00:10:51,760 És így már b és a. 226 00:10:51,760 --> 00:10:55,480 És akkor mi van a véletlen számot 0 és 1 között adott nekünk drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Vannak, akik megpróbálták, hogy b vagy b mínusz Egy, vagy valami belül azokat a 229 00:11:06,630 --> 00:11:07,960 zárójelben. 230 00:11:07,960 --> 00:11:11,210 Ez azt jelentené, hogy ők érvek ezt a funkciót. 231 00:11:11,210 --> 00:11:13,450 >> drand nem vállal semmilyen érvet - mint getString nem 232 00:11:13,450 --> 00:11:14,330 nem vállal semmilyen érvet. 233 00:11:14,330 --> 00:11:16,600 Tehát csak nyitott paren, közel Paren - és hogy önmagában 234 00:11:16,600 --> 00:11:17,330 A függvényhívás. 235 00:11:17,330 --> 00:11:19,770 És ez ad egy számot 0 és 1 közötti. 236 00:11:19,770 --> 00:11:22,820 Természetesen van egy egész sor hogy a számok lehet, hogy be 237 00:11:22,820 --> 00:11:28,470 >> Mondjuk, ha a b 10 és 5, valóban szeretnénk egy számot egy sor 5. 238 00:11:28,470 --> 00:11:36,940 Így a következő dolog, amit tennie kell, hogy szorozzuk ezt tartományon b mínusz egy. 239 00:11:36,940 --> 00:11:40,380 Tehát, feltételezve azt, hogy ez megsokszorozódott. 240 00:11:40,380 --> 00:11:42,590 És ez ad nekünk egy számot egy adott tartományon belül. 241 00:11:42,590 --> 00:11:46,610 És az adott tartományban, hogy a különbség b mínusz. 242 00:11:46,610 --> 00:11:50,030 >> És végül, hogy akkor csak, hogy ez a - szerint a tartomány a B mínusz 243 00:11:50,030 --> 00:11:52,520 5, hogy ad nekünk egy szám 0-5. 244 00:11:52,520 --> 00:11:56,000 De ha egy valójában 5, meg kell, hogy növeljék ez a hatótávolság, ahol ez 245 00:11:56,000 --> 00:12:01,380 valóban kéne lennie, hozzáadásával. 246 00:12:01,380 --> 00:12:02,580 Ahhoz, hogy megkapja a logika helyes. 247 00:12:02,580 --> 00:12:03,745 És akkor, ugye, hogy még egy kérdés? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: Nem. 249 00:12:04,547 --> 00:12:06,010 Úgy érzem, nagyon buta most. 250 00:12:06,010 --> 00:12:06,405 [Nevet] 251 00:12:06,405 --> 00:12:06,730 >> JASON HIRSCHHORN: Nem. 252 00:12:06,730 --> 00:12:08,640 Nem érzem igazán hülye. 253 00:12:08,640 --> 00:12:10,560 Számos ember küzdött ezzel a kérdéssel. 254 00:12:10,560 --> 00:12:13,920 És akkor, a másik kérdés az, drand, azt mondta, ad egy úszó - 255 00:12:13,920 --> 00:12:14,940 visszaad egy úszó. 256 00:12:14,940 --> 00:12:18,020 De ez a funkció valóban kérte az egész, hogy vissza. 257 00:12:18,020 --> 00:12:23,700 >> Nem kell vetni ezt kifejezetten hogy egy egész szám, mert ezek a 258 00:12:23,700 --> 00:12:29,090 műveletek kezelni, mint minden a úszó -, mint a lebegőpontos szám. 259 00:12:29,090 --> 00:12:31,570 Mint ez - még akkor is, ha ez jelentése egész szám, ez az akarat 260 00:12:31,570 --> 00:12:32,890 kell szorozni helyesen. 261 00:12:32,890 --> 00:12:34,000 Az összes szorzást fog működni. 262 00:12:34,000 --> 00:12:35,060 Nem kell vetni itt. 263 00:12:35,060 --> 00:12:36,480 Sőt, akkor ne dobd el. 264 00:12:36,480 --> 00:12:37,310 >> Ez ugyanis - 265 00:12:37,310 --> 00:12:40,750 ha öntött egy számot ez a 0 és az 1 - 266 00:12:40,750 --> 00:12:42,680 egy véletlen számot, egy lebegőpontos - 267 00:12:42,680 --> 00:12:47,850 akkor sem lehet csak a 0 vagy 1, így a elveszted, hogy a pontosság. 268 00:12:47,850 --> 00:12:50,120 De a végén, amikor visszatérsz, automatikusan lesz 269 00:12:50,120 --> 00:12:51,620 küldött vissza egy egész szám. 270 00:12:51,620 --> 00:12:56,870 Szóval nem kell tennie hogy a casting magad. 271 00:12:56,870 --> 00:13:00,810 >> Tehát ez volt a válasz, hogy ezt a kérdést, 7-es szám. 272 00:13:00,810 --> 00:13:02,190 Minden más kérdés a kvíz 0-ra? 273 00:13:02,190 --> 00:13:03,300 Igen, Annie. 274 00:13:03,300 --> 00:13:05,050 >> Annie: Mikor használjuk rekurzív - 275 00:13:05,050 --> 00:13:07,850 mikor használjuk iteratív hurok? 276 00:13:07,850 --> 00:13:10,210 >> JASON HIRSCHHORN: Ha nem használ rekurzív - így általában, a 277 00:13:10,210 --> 00:13:14,110 érvek és ellenérvek a rekurzió szemben iteratív megközelítés. 278 00:13:14,110 --> 00:13:17,110 Tud valaki ajánlani egy profi, vagy a con? 279 00:13:17,110 --> 00:13:19,460 Kérjük? 280 00:13:19,460 --> 00:13:20,140 Nem lehet senkit. 281 00:13:20,140 --> 00:13:22,526 Ki tud nyújtani egy profi, vagy a con? 282 00:13:22,526 --> 00:13:26,963 >> [PAPÍR susogó] 283 00:13:26,963 --> 00:13:29,730 >> DIÁK 1: Rekurzív kevésbé kódolás - kevesebb gépelés? 284 00:13:29,730 --> 00:13:33,170 >> JASON HIRSCHHORN: Tehát általában, rekurzió különösen a funkció - 285 00:13:33,170 --> 00:13:35,750 vagy egy algoritmus hasonló merge sort - amely alkalmas arra, 286 00:13:35,750 --> 00:13:37,300 a rekurzív megközelítés - 287 00:13:37,300 --> 00:13:40,710 sokkal könnyebb lenne, kódot rekurzívan. 288 00:13:40,710 --> 00:13:43,940 És csak, hogy több értelme csinálni rekurzívan. 289 00:13:43,940 --> 00:13:46,230 Szóval ez lenne a Pro rekurziót. 290 00:13:46,230 --> 00:13:46,610 Mások? 291 00:13:46,610 --> 00:13:47,467 Igen? 292 00:13:47,467 --> 00:13:49,240 >> Diák 2: Con rekurzió - 293 00:13:49,240 --> 00:13:50,940 Használ több memóriát. 294 00:13:50,940 --> 00:13:52,200 >> JASON HIRSCHHORN: Tehát pontosan így van. 295 00:13:52,200 --> 00:13:55,720 A rekurzív függvény fogja hozzá stack keretek a verem. 296 00:13:55,720 --> 00:13:59,690 Tehát, ha működik a sok számokat, és meg kell hívni ezt a 297 00:13:59,690 --> 00:14:02,560 funkció sokat, akkor biztosan több memóriát, míg a 298 00:14:02,560 --> 00:14:05,810 iteratív megközelítés csak akkor tesz egy verem keret a verem, mert 299 00:14:05,810 --> 00:14:08,420 minden történik belül egy funkció. 300 00:14:08,420 --> 00:14:11,010 >> Minden más előnyei és hátrányai? 301 00:14:11,010 --> 00:14:11,500 Igen. 302 00:14:11,500 --> 00:14:12,550 >> DIÁK 3: profik rekurzió. 303 00:14:12,550 --> 00:14:15,950 Nem kell meghatározni, előre hányszor 304 00:14:15,950 --> 00:14:17,660 kódot meg kellett ismételni. 305 00:14:17,660 --> 00:14:22,810 Akkor lehet egy előre meghatározott számú idő, hogy meg kell halad-hatunk, majd 306 00:14:22,810 --> 00:14:26,420 rekurzió jobb, mert tart az eredmény. 307 00:14:26,420 --> 00:14:27,780 >> JASON HIRSCHHORN: Azt hiszem, ez igaz. 308 00:14:27,780 --> 00:14:30,770 De azt hiszem, mindkét esetben Te soha nem - 309 00:14:30,770 --> 00:14:33,290 akkor valószínűleg egy kis bemenet a felhasználó. 310 00:14:33,290 --> 00:14:35,990 Vagy ez a funkció volna valamelyik bemeneti , amely meghatározza, hogy hányszor 311 00:14:35,990 --> 00:14:36,730 kell futtatni. 312 00:14:36,730 --> 00:14:39,520 Tehát általában, akkor nem nehéz kód - még egy iteratív megközelítés - how 313 00:14:39,520 --> 00:14:40,940 sokszor, hogy hurkot kell futtatni. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Megint voltál gondolkodás, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Tehát ezek talán a két - 318 00:14:51,650 --> 00:14:54,370 a legnagyobb profi, és a legnagyobb con a rekurzív szemben 319 00:14:54,370 --> 00:14:57,080 iteratív megközelítés. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Bármi mást kvíz 0-ra? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Menjünk tovább. 324 00:15:09,920 --> 00:15:15,260 Fájl I / O Van egy csodálatos rövid ezen a héten az I / O műveleteket, ami remélhetőleg 325 00:15:15,260 --> 00:15:19,270 Ön nézte több idő, és csodálta. 326 00:15:19,270 --> 00:15:22,910 A sok munka bement, és én már hallottam, hogy őrülten hasznos. 327 00:15:22,910 --> 00:15:25,740 Én is szerepel a linkre a dia, ha még nem volt 328 00:15:25,740 --> 00:15:29,160 esélyt, hogy nézze meg 10 alkalommal. 329 00:15:29,160 --> 00:15:35,280 >> Így fogunk röviden menjen át a nagy lépéseket nyitó és munka 330 00:15:35,280 --> 00:15:38,400 fájlokat, majd fogunk belevetik magukat a kódolási probléma előtt 331 00:15:38,400 --> 00:15:40,400 vizsgálja a probléma meg. 332 00:15:40,400 --> 00:15:44,330 Tehát újra fogom, hogy ezt fel a képernyőn, de fogok beszélni 333 00:15:44,330 --> 00:15:47,630 csak egy percre, hogy mi vagyunk itt a fájl I/O-- 334 00:15:47,630 --> 00:15:49,090 mit jelent ez? 335 00:15:49,090 --> 00:15:55,280 >> Ez azt jelenti, hogy mi is létrehozhatunk a programokat, és ezt követően a program 336 00:15:55,280 --> 00:16:00,370 exit, és nem tett semmilyen hatással A külvilág a programunk. 337 00:16:00,370 --> 00:16:04,630 De amikor elkezdünk dolgozni a kép - mind olvasás őket, és létre 338 00:16:04,630 --> 00:16:10,460 őket - mi lehet némi hatása a kívüli világ a programunk. 339 00:16:10,460 --> 00:16:15,440 >> Csakúgy, mint ha a Microsoft Word nem volt képes , hogy minden Word dokumentumokat, akkor 340 00:16:15,440 --> 00:16:18,710 Egyszer Microsoft Word kilép, az összes munkát fog tűnni, és ez 341 00:16:18,710 --> 00:16:19,740 tényleg használhatatlan. 342 00:16:19,740 --> 00:16:23,620 Mi végül akarjuk, hogy képes legyen programokat írhassanak, amelyek hatással lehetnek a 343 00:16:23,620 --> 00:16:31,350 őket körülvevő világot, mind azáltal, hogy komplex bemenet - mind a fájlok és 344 00:16:31,350 --> 00:16:37,080 keresztül fájlokat, és meg kell teremteni érdekes és vonzó kimenetek - 345 00:16:37,080 --> 00:16:39,520 szempontjából a különböző típusú fájlokat. 346 00:16:39,520 --> 00:16:43,730 >> Tehát ezért kezdenek megtanulják, hogyan kell dolgozni fájlokat. 347 00:16:43,730 --> 00:16:47,080 Pontosabban, mi mi a következő. 348 00:16:47,080 --> 00:16:47,680 Ez nagyon egyszerű. 349 00:16:47,680 --> 00:16:51,530 Már csak pár lépést, és ezek szerepelnek itt a kód. 350 00:16:51,530 --> 00:16:55,130 Így fogunk átmenni ezt a kódot sorról sorra. 351 00:16:55,130 --> 00:16:57,630 >> Először is, látod kiemelt - 352 00:16:57,630 --> 00:17:01,330 ha dolgozik egy fájlt, függetlenül attól, hogy milyen típusú fájl van, 353 00:17:01,330 --> 00:17:02,670 meg kell nyitni. 354 00:17:02,670 --> 00:17:05,130 És ez a hívás fopen - 355 00:17:05,130 --> 00:17:05,950 itt. 356 00:17:05,950 --> 00:17:07,980 Beírja a fájl nevét. 357 00:17:07,980 --> 00:17:11,930 Ha a fájl nincs a könyvtárban, vagy a mappát, ahol a program 358 00:17:11,930 --> 00:17:15,910 él, akkor is kell, hogy tartalmazza egy utat, hogy hol van a fájl. 359 00:17:15,910 --> 00:17:19,099 >> Fogjuk fel, hogy ez a nevű fájl "text.txt" - 360 00:17:19,099 --> 00:17:24,220 egy egyszerű szöveges dokumentum - van a ugyanabba a mappába, mint ez a program. 361 00:17:24,220 --> 00:17:26,859 Szóval, ez egy másik dolog, hogy tartsa szem előtt tartva -, hogy ha meg szeretné nyitni a fájlt 362 00:17:26,859 --> 00:17:30,050 valahol máshol, valóban szüksége van tartalmazza a helyét. 363 00:17:30,050 --> 00:17:33,520 >> Másodszor, akkor át egy érv, hogy fopen, és ez az, amit akarsz 364 00:17:33,520 --> 00:17:34,620 a fájl. 365 00:17:34,620 --> 00:17:38,450 Három fő érv, hogy fogsz át fopen. 366 00:17:38,450 --> 00:17:40,060 Ki tud adni nekem a három? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Ki tud adni nekem az egyiket? 369 00:17:47,130 --> 00:17:48,130 Igen. 370 00:17:48,130 --> 00:17:50,010 >> STUDENT 4.: A fájl neve? 371 00:17:50,010 --> 00:17:50,440 >> JASON HIRSCHHORN: Elnézést. 372 00:17:50,440 --> 00:17:55,490 Három fő érv akkor át a második érv, hogy az fopen. 373 00:17:55,490 --> 00:17:57,060 Igazad van - a fájl nevét az első érv. 374 00:17:57,060 --> 00:18:01,620 De a második érv, hogy az fopen van általában három húrok, és - igen. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: hozzáfűzés. 377 00:18:03,490 --> 00:18:06,840 >> JASON HIRSCHHORN: A, ha azt szeretné, hogy hozzáfűzi, hogy a fájl már létezik. 378 00:18:06,840 --> 00:18:07,810 >> STUDENT 5: R olvasási. 379 00:18:07,810 --> 00:18:09,930 >> JASON HIRSCHHORN: R, ha szeretnénk olvasni egy fájlt. 380 00:18:09,930 --> 00:18:10,670 >> STUDENT 6.: W írni. 381 00:18:10,670 --> 00:18:12,840 >> JASON HIRSCHHORN És w, ha szeretnénk írni a fájlt. 382 00:18:12,840 --> 00:18:17,570 Tehát ebben az esetben írunk hogy a fájlt, így van w. 383 00:18:17,570 --> 00:18:22,360 Kinyitod, akkor is meg kell menteni a fájl valahol, és ez a 384 00:18:22,360 --> 00:18:26,000 kódot a bal oldali Az értékadó operátor - 385 00:18:26,000 --> 00:18:31,220 Én létre egy mutatót a fájl hívják, ebben az esetben, a fájl. 386 00:18:31,220 --> 00:18:36,070 >> Nem fogunk aggódni, mi ez az egész sapkák FILE dolog. 387 00:18:36,070 --> 00:18:40,600 Elég annyit mondani, ez egy hosszú patak nullák. 388 00:18:40,600 --> 00:18:44,970 És így fogunk működik, és megérteni. 389 00:18:44,970 --> 00:18:47,300 >> A következő dolog, amit tennie kell - és ez hihetetlenül fontos - 390 00:18:47,300 --> 00:18:49,070 ha megnyitja a fájlt - 391 00:18:49,070 --> 00:18:54,250 Sőt, amikor hívja malloc, a Például, és egy kis memória, és próbálja 392 00:18:54,250 --> 00:18:57,980 és mentse el a mutató, mindig szeretné, hogy ellenőrizze, hogy megbizonyosodjon arról, hogy 393 00:18:57,980 --> 00:19:00,230 funkciója nem tért vissza null. 394 00:19:00,230 --> 00:19:05,230 >> Tehát ebben az esetben, azt ellenőrzik, hogy a arról, hogy mi valóban nyitott a 395 00:19:05,230 --> 00:19:10,230 fájl helyesen, és nem volt nincs hiba a programunkban. 396 00:19:10,230 --> 00:19:15,160 Ezután, ha egyszer már ellenőrizni, hogy megbizonyosodjon arról, hogy van egy működő fájlt, tudjuk 397 00:19:15,160 --> 00:19:18,520 írni, vagy olvasni, vagy hozzáfűzni, hogy a fájlt. 398 00:19:18,520 --> 00:19:24,270 Ebben az esetben én csak a nyomtatás egy sor erre a fájlra. 399 00:19:24,270 --> 00:19:25,450 >> Honnan tudom ezt? 400 00:19:25,450 --> 00:19:27,990 Nos, ezzel a funkcióval nevű fprintf. 401 00:19:27,990 --> 00:19:30,970 Az összes funkció lesz használva írásakor, illetve olvasása, vagy 402 00:19:30,970 --> 00:19:34,950 manipulálni fájlok hasonló lesz funkciók, amit látott, de 403 00:19:34,950 --> 00:19:38,420 kezdődik az F betű, állni fájlt. 404 00:19:38,420 --> 00:19:43,440 És fprintf, ellentétben a normál nyomtatási app, úgy egy további érv, 405 00:19:43,440 --> 00:19:47,800 és ez a fájl, ahol szeretne nyomtatni, ezt a sort. 406 00:19:47,800 --> 00:19:50,640 >> Nem kell semmit jobbra Ohai. 407 00:19:50,640 --> 00:19:52,860 Nem kell a harmadik argumentum printf - 408 00:19:52,860 --> 00:19:57,030 vagy a második érv, hogy printf, a harmadik érv az fprintf, mert 409 00:19:57,030 --> 00:19:59,480 nincs helyőrző itt. 410 00:19:59,480 --> 00:20:01,070 Én nem beleértve a változókat. 411 00:20:01,070 --> 00:20:06,070 De ismétlem, fprintf és az összes ilyen fájl funkciók működnek kép 412 00:20:06,070 --> 00:20:09,820 általában lesz szüksége a fájl amelyen ők működik. 413 00:20:09,820 --> 00:20:15,960 >> Végül az utolsó fontos dolog, hogy tennie, hogy zárja be a fájlt, mint 414 00:20:15,960 --> 00:20:19,530 és - amikor csak malloc valamit, azt akarjuk, hogy szabad valamit, nehogy 415 00:20:19,530 --> 00:20:22,730 Van memóriavesztés - szeretnénk zárja a fájlt. 416 00:20:22,730 --> 00:20:28,180 Ha ez a program kilépett bezárása nélkül a fájl, esély sem menne 417 00:20:28,180 --> 00:20:30,050 rossz, különösen, ha ez egy kis fájlt. 418 00:20:30,050 --> 00:20:35,020 >> De ez biztosan jó kódolási stílus és a gyakorlat, hogy mindig zárja be a fájlt 419 00:20:35,020 --> 00:20:38,050 amikor befejezte azt. 420 00:20:38,050 --> 00:20:43,630 Szóval ez az alapjait fájl I / O Valószínűleg már látott ilyet, vagy 421 00:20:43,630 --> 00:20:45,710 nézte meg ebben a fantasztikus rövid. 422 00:20:45,710 --> 00:20:48,410 Van valakinek bármilyen kérdése van, mielőtt bemegyünk egy kis gyakorlás kódolás 423 00:20:48,410 --> 00:20:51,800 problémák, a fájl I / O vagy a lépések csak átmentem? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [TIPIZÁLÁS Hangok] 426 00:21:03,162 --> 00:21:04,150 >> JASON HIRSCHHORN: Van van egy kérdés, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Nem. 428 00:21:04,660 --> 00:21:04,740 >> JASON HIRSCHHORN: OK. 429 00:21:04,740 --> 00:21:06,746 Fogok várni egy hét másodperc. 430 00:21:06,746 --> 00:21:07,590 [Nevet] 431 00:21:07,590 --> 00:21:08,620 Ez egy nagyon jó tipp. 432 00:21:08,620 --> 00:21:10,750 Ti csak nem tetszik kérdéseket. 433 00:21:10,750 --> 00:21:11,660 Ez rendben van. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Tehát az első gyakorlat a probléma, mi fog előidézni a funkció 436 00:21:17,620 --> 00:21:22,330 egy parancssori eszköz, amely valószínűleg korábban használt - copy - 437 00:21:22,330 --> 00:21:23,500 A másolat eszközt. 438 00:21:23,500 --> 00:21:28,050 Ha beírja cp, majd adja át a két érvek be a terminál, akkor 439 00:21:28,050 --> 00:21:28,980 másolni a fájlt. 440 00:21:28,980 --> 00:21:31,220 És ez az, amit mi fogunk írni most. 441 00:21:31,220 --> 00:21:35,830 >> Tehát még egyszer, olvassa el ezt dia, én , hogy írjon egy programot, amely 442 00:21:35,830 --> 00:21:38,130 kettő, míg a parancssori érveket - 443 00:21:38,130 --> 00:21:40,750 a forrás fájlt, és a célfájl - 444 00:21:40,750 --> 00:21:44,590 és másolja a tartalmát a forrás fájlt a célfájl 445 00:21:44,590 --> 00:21:46,960 egy byte egy időben. 446 00:21:46,960 --> 00:21:48,510 Szóval ez egy sokat kérni. 447 00:21:48,510 --> 00:21:52,200 >> Ismét egy jó megközelítés, hogy ez a nem megy egyenesen a C kódot, de 448 00:21:52,200 --> 00:21:54,280 felosztása pár lépést. 449 00:21:54,280 --> 00:21:58,400 Először is, gondoljon a logika - pontosan amit kérek, hogy nem - 450 00:21:58,400 --> 00:22:00,620 és megérteni az összes lépéseket, hogy ezt a problémát. 451 00:22:00,620 --> 00:22:04,410 Nem a C, csak bizonyos pszeudokódja, vagy akár egy mentális modellje 452 00:22:04,410 --> 00:22:06,030 mi folyik itt. 453 00:22:06,030 --> 00:22:10,050 >> Ezután, ha egyszer már a pszeudokód le, kitalálni, hogyan lehet a pszeudokód 454 00:22:10,050 --> 00:22:14,600 térképek rá eszközök és dolog, amit megtanulta használni a C 455 00:22:14,600 --> 00:22:19,070 >> És végül, ha már minden együtt, akkor a kódot a problémát. 456 00:22:19,070 --> 00:22:23,370 Take 5-től 10 percig, hogy dolgoznak ezen a problémán. 457 00:22:23,370 --> 00:22:25,800 Teszek az utasításokat vissza a második. 458 00:22:25,800 --> 00:22:27,990 És akkor fogunk menni át A pszeudokód, és a kód 459 00:22:27,990 --> 00:22:29,230 élni, mint egy csoport. 460 00:22:29,230 --> 00:22:31,640 >> Ha bármilyen kérdése van, miközben te ezen dolgozik, nyugodtan fel 461 00:22:31,640 --> 00:22:34,260 a kezét, és eljövök körül, és válaszolni rájuk. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> STUDENT 7: Tudok húzza egy darab papír? 464 00:22:39,330 --> 00:22:41,537 >> JASON HIRSCHHORN: Mi van? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [TIPIZÁLÁS Hangok] 467 00:26:48,043 --> 00:26:48,730 >> JASON HIRSCHHORN: OK. 468 00:26:48,730 --> 00:26:51,710 Menjünk át a pszeudokód először, és akkor adok neked egy pár 469 00:26:51,710 --> 00:26:52,960 perc alatt befejezni kódolás. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Ki szeretném kezdeni engem az első sorban a 472 00:26:58,650 --> 00:27:00,030 pszeudokódját ezt a funkciót? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> STUDENT 8. Győződjön meg arról, hogy kaptak két fájlt. 475 00:27:05,740 --> 00:27:06,990 >> JASON HIRSCHHORN: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 És ha nem? 478 00:27:22,990 --> 00:27:25,974 >> STUDENT 8: Én vissza 0-ra. 479 00:27:25,974 --> 00:27:27,872 >> JASON HIRSCHHORN: kéne vissza 0-ra? 480 00:27:27,872 --> 00:27:30,182 >> STUDENT 8.: vissza a - 481 00:27:30,182 --> 00:27:30,650 törlést. 482 00:27:30,650 --> 00:27:30,850 Bocsánat. 483 00:27:30,850 --> 00:27:31,210 >> JASON HIRSCHHORN: Igen. 484 00:27:31,210 --> 00:27:32,710 Valószínűleg nem 0-ra. 485 00:27:32,710 --> 00:27:34,680 Mivel a 0 azt jelenti, minden jó volt. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Szóval ez az első sor A pszeudokódja. 488 00:27:36,730 --> 00:27:38,715 Kinek van a második sor pszeudokódja? 489 00:27:38,715 --> 00:27:40,630 >> DIÁK 9.: Open mind a fájlokat? 490 00:27:40,630 --> 00:27:41,880 >> JASON HIRSCHHORN: Nyissa meg a két kép. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 OK? 493 00:27:50,920 --> 00:27:52,850 >> STUDENT 10. Ellenőrizze, hogy ha a fájl NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON HIRSCHHORN: Ellenőrizze, arról sem vagy NULL. 496 00:28:12,580 --> 00:28:15,800 Mellesleg - 497 00:28:15,800 --> 00:28:17,540 perjel 0 - 498 00:28:17,540 --> 00:28:18,887 ez NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: Nem. 500 00:28:20,080 --> 00:28:21,190 >> JASON HIRSCHHORN: Ez nem NULL. 501 00:28:21,190 --> 00:28:23,400 Ezt nevezik a NULL terminátort. 502 00:28:23,400 --> 00:28:25,580 Ez valójában tönkölybúza csak egy l. 503 00:28:25,580 --> 00:28:28,580 Így ellenőrizni valamit ez ellen - ez valójában egy karaktert - 504 00:28:28,580 --> 00:28:31,710 így ellenőrzése valami ellen, ami nem ugyanaz, mint ellenőrzi, hogy ha ez 505 00:28:31,710 --> 00:28:32,690 értéke NULL. 506 00:28:32,690 --> 00:28:34,100 >> És néhány ember - 507 00:28:34,100 --> 00:28:36,040 azok vetélkedők és a probléma készlet - már megvan a 508 00:28:36,040 --> 00:28:36,890 két ilyen összezavarodott. 509 00:28:36,890 --> 00:28:38,830 De a kettő ezek közül ténylegesen különböző. 510 00:28:38,830 --> 00:28:40,220 Az egyik végén a húr - 511 00:28:40,220 --> 00:28:43,210 az egyik a mutató 0-ra. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: Miért nem ellenőrzi, hogy győződjön meg arról, hogy a fájlok nem NULL 513 00:28:46,490 --> 00:28:48,670 mielőtt megnyitná őket? 514 00:28:48,670 --> 00:28:54,772 >> JASON HIRSCHHORN: Tehát nyitott takarít valamit a fájlban. 515 00:28:54,772 --> 00:28:57,780 És ha megy vissza - 516 00:28:57,780 --> 00:28:59,520 így ez a vonal - fopen - 517 00:28:59,520 --> 00:29:05,300 kapsz egy címet, és tárolja ezt a címet a fájlt, ha működik. 518 00:29:05,300 --> 00:29:07,650 Ha ez nem működik, akkor tárolja NULL - 519 00:29:07,650 --> 00:29:08,020 >> STUDENT 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Megvagy. 522 00:29:08,500 --> 00:29:09,050 >> JASON HIRSCHHORN: a fájlban. 523 00:29:09,050 --> 00:29:11,990 Így nem tudja ellenőrizni a NULL mielőtt még kinyitotta. 524 00:29:11,990 --> 00:29:13,520 NULL jelent valamit, nem működik megfelelően. 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 OK. 527 00:29:18,740 --> 00:29:22,590 Tehát, győződjön meg róla, nem IS? 528 00:29:22,590 --> 00:29:23,200 Vagy nem? 529 00:29:23,200 --> 00:29:23,770 Mit gondol? 530 00:29:23,770 --> 00:29:24,310 Megyünk vele. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: Is. 532 00:29:24,520 --> 00:29:25,020 >> JASON HIRSCHHORN: A? 533 00:29:25,020 --> 00:29:25,930 Egyik sem? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: Is. 535 00:29:26,350 --> 00:29:26,390 >> JASON HIRSCHHORN: OK. 536 00:29:26,390 --> 00:29:28,510 Úgy tűnik, hogy néhány konszenzus, hogy az. 537 00:29:28,510 --> 00:29:30,520 Egyik sem NULL. 538 00:29:30,520 --> 00:29:32,250 OK, következő sor a pszeudokódja. 539 00:29:32,250 --> 00:29:33,600 Ki nem adott nekem egy sort még? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Mi fogja várni. 542 00:29:38,295 --> 00:29:39,020 Igen. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: El kell olvasni az első fájl? 544 00:29:40,895 --> 00:29:42,290 >> JASON HIRSCHHORN: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14: Vagy használjuk fscanf vagy valami ilyesmi, hogy az első fájl? 546 00:29:46,240 --> 00:29:50,650 >> JASON HIRSCHHORN: Tehát szeretnénk olvasd el az első fájlt, és - 547 00:29:50,650 --> 00:29:51,900 mondjuk, hogy itt van. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Olvassa el a forrás fájlt. 550 00:30:01,880 --> 00:30:05,370 És akkor, mit csinálunk, miután olvasható a forrás file? 551 00:30:05,370 --> 00:30:06,620 Valaki más? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENT 15.: Írd be a cél fájlt? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON HIRSCHHORN: Azt írja, hogy a célfájl, és - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Mit hagytunk ki? 558 00:30:30,030 --> 00:30:32,460 Valaki más, aki nem adott nekem kódsor még - a pszeudokódja. 559 00:30:32,460 --> 00:30:33,510 Igen. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16.: Lehet, hogy mindig ellenőrizze hogy van-e valami, olvasni, 561 00:30:36,540 --> 00:30:37,970 mint a következő sor? 562 00:30:37,970 --> 00:30:39,550 Ez olyan, mint a következő sorban, nézd meg, hogy létezik. 563 00:30:39,550 --> 00:30:40,660 >> [Elektronikus BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON HIRSCHHORN: Hoppá. 565 00:30:41,095 --> 00:30:43,120 Ez az én naplózó szoftver. 566 00:30:43,120 --> 00:30:43,580 Igen? 567 00:30:43,580 --> 00:30:44,960 >> STUDENT 16.: Igen. 568 00:30:44,960 --> 00:30:48,940 >> JASON HIRSCHHORN: Tehát hogy nekem még egyszer. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT 16. Ellenőrizze, hogy van-e még a következő sort a 570 00:30:51,640 --> 00:30:52,920 forrás fájlt olvasni. 571 00:30:52,920 --> 00:30:53,500 >> JASON HIRSCHHORN: OK. 572 00:30:53,500 --> 00:30:56,060 Szóval nem olvasta vonalak - olvasták bájt itt - 573 00:30:56,060 --> 00:30:57,590 de igazad van. 574 00:30:57,590 --> 00:31:00,040 Azt akarjuk, hogy írni és olvasni, amíg nincs több bájt. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 OK. 577 00:31:11,735 --> 00:31:16,940 És így ezeket igazán tagolt egy kicsit, mert ők alatta. 578 00:31:16,940 --> 00:31:17,470 Nem igaz? 579 00:31:17,470 --> 00:31:20,620 Amíg kint vagyunk a byte, megyünk olvasd el a forrás fájlt, és írjuk 580 00:31:20,620 --> 00:31:22,160 a cél fájlt. 581 00:31:22,160 --> 00:31:24,510 >> És akkor, mi az utolsó vonal pszeudokódja? 582 00:31:24,510 --> 00:31:26,380 Valaki, aki nem adott nekem valamit még. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17. Zárja le a fájlokat? 585 00:31:30,260 --> 00:31:31,510 >> JASON HIRSCHHORN: Pontosan. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Zárja le a fájlokat. 588 00:31:37,450 --> 00:31:38,400 Tehát mi pszeudokódja. 589 00:31:38,400 --> 00:31:41,870 Azt fogom tenni a pszeudokód a gedit, és pár perc múlva 590 00:31:41,870 --> 00:31:44,626 majd kódot Együtt. 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> OK. 593 00:33:56,000 --> 00:33:58,290 Engedje meg, hogy indult egy csoport. 594 00:33:58,290 --> 00:33:59,940 Nishant, van az új fájlt. 595 00:33:59,940 --> 00:34:01,130 Épp most megnyílt ezt fel. 596 00:34:01,130 --> 00:34:01,880 Untitled Document 1. 597 00:34:01,880 --> 00:34:05,490 Mi az első dolog, amit meg kell csinálni? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Beleértve a könyvtárak? 599 00:34:07,040 --> 00:34:08,219 >> JASON HIRSCHHORN: OK. 600 00:34:08,219 --> 00:34:11,070 Mely könyvtárakkal? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: stdio.h, stdlib.h, azt hiszem? 602 00:34:17,570 --> 00:34:18,000 >> JASON HIRSCHHORN: OK. 603 00:34:18,000 --> 00:34:21,592 Mi StdLib az? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: elfelejtettem. 605 00:34:23,010 --> 00:34:23,219 >> JASON HIRSCHHORN: OK. 606 00:34:23,219 --> 00:34:24,179 Így többek között stdio. 607 00:34:24,179 --> 00:34:28,630 Mit kell tennem, még mielőtt Kezdek kódolás? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Írj egy fejléc? 609 00:34:29,710 --> 00:34:31,830 >> JASON HIRSCHHORN: Hogyan kapom meg színes? 610 00:34:31,830 --> 00:34:34,060 >> [Közbeiktatásával VOICES] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Hogy érted színes? 612 00:34:35,040 --> 00:34:38,060 >> JASON HIRSCHHORN: Hogyan tudom színkódolás? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Nem tudom. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Mentés. 616 00:34:39,389 --> 00:34:39,929 >> JASON HIRSCHHORN: Mentés. 617 00:34:39,929 --> 00:34:40,270 Igen. 618 00:34:40,270 --> 00:34:41,760 Meg kell menteni, mint egy. C. 619 00:34:41,760 --> 00:34:46,239 Így mentse el az asztalon, mint cp.c. 620 00:34:46,239 --> 00:34:47,280 Édes. 621 00:34:47,280 --> 00:34:51,199 És ha azt akarom, hogy a teljes stílus pontokat, mit kell 622 00:34:51,199 --> 00:34:53,085 többek között a csúcson? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Lehet írni a neved, nevét a program, és a cél 624 00:34:58,390 --> 00:34:59,640 A program is? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON HIRSCHHORN: Jól néz ki. 627 00:35:10,040 --> 00:35:10,470 Kiváló. 628 00:35:10,470 --> 00:35:12,940 Szóval elkezdtem minket tökéletesen. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 mi is írja - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 OK. 633 00:35:30,870 --> 00:35:33,520 Szóval azt hiszem, minden beállítva, hogy menjen. 634 00:35:33,520 --> 00:35:38,003 Ki az első sort a kód nekem - vagy az első sornyi kódot, hogy 635 00:35:38,003 --> 00:35:41,280 ez lesz kielégíteni az első comment pszeudokód? 636 00:35:41,280 --> 00:35:41,985 Önnek. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: Ha nem lenne int argc, majd char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON HIRSCHHORN: Azt hiszem, igazad van. 639 00:35:49,490 --> 00:35:56,270 Nézzük a változás, hogy int main, nyitott paren, int argc, vessző, char * argv? 640 00:35:56,270 --> 00:35:57,150 Mint ez? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18.: Konzolok. 642 00:35:57,410 --> 00:35:58,260 >> JASON HIRSCHHORN: Konzolok. 643 00:35:58,260 --> 00:35:59,860 Nyitó zárójel, záró zárójel, szoros szülő. 644 00:35:59,860 --> 00:36:00,240 Tökéletes. 645 00:36:00,240 --> 00:36:02,160 Most már tudom, hogy parancssori argumentumok. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Győződjön meg arról, mi adott két fájlt. 648 00:36:04,250 --> 00:36:07,905 Adhat nekem is. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: Ha argc - 650 00:36:09,180 --> 00:36:11,060 ez nem egyenlő 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON HIRSCHHORN: Ha nyitott paren argc nem egyenlő 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Igen, vissza 1., vagy ilyesmi. 653 00:36:16,970 --> 00:36:17,460 >> JASON HIRSCHHORN: Elnézést. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18.: Return 1. vagy ilyesmi. 655 00:36:19,120 --> 00:36:20,270 >> JASON HIRSCHHORN: vissza 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Remek. 658 00:36:22,970 --> 00:36:24,290 Nyissa ki mindkét fájlt. 659 00:36:24,290 --> 00:36:26,160 Ki tud segíteni nekem, nyissa fel a fájlokat? 660 00:36:26,160 --> 00:36:28,125 Ki nem adott nekem kód már? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Kurt? 663 00:36:32,320 --> 00:36:36,145 >> KURT: Szóval caps F-I-L-E csillagos forrást. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON HIRSCHHORN: megyek , hogy vegye ki a magánhangzókat. 666 00:36:40,920 --> 00:36:41,570 Ezek cool. 667 00:36:41,570 --> 00:36:42,716 Olyan, mint a Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18: Egyenlő fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON HIRSCHHORN: Egyenlő fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18.: Open paren, argv, nyitó zárójel. 671 00:36:49,870 --> 00:36:50,055 >> JASON HIRSCHHORN: Várjon. 672 00:36:50,055 --> 00:36:50,240 Bocsánat. 673 00:36:50,240 --> 00:36:51,050 Nyitott paren. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENT 18.: Igen. 676 00:36:53,080 --> 00:36:55,110 Argv sub 1.. 677 00:36:55,110 --> 00:36:55,860 >> JASON HIRSCHHORN: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> STUDENT 18.: Igen. 679 00:36:56,140 --> 00:36:58,540 Argv nyitva tartó 1 - 680 00:36:58,540 --> 00:36:59,730 Igen. 681 00:36:59,730 --> 00:37:06,470 És akkor vessző, majd a nyitott dupla idézet, r, két idézet, 682 00:37:06,470 --> 00:37:08,250 szoros paren, pontosvessző. 683 00:37:08,250 --> 00:37:09,450 >> JASON HIRSCHHORN: Édes. 684 00:37:09,450 --> 00:37:10,950 És mi a helyzet a másik? 685 00:37:10,950 --> 00:37:16,030 >> DIÁK 18: Nagyon hasonló, de ehelyett Az S-R-C, azt nevezzük D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON HIRSCHHORN: Oo! 687 00:37:17,060 --> 00:37:17,772 Ez tetszik. 688 00:37:17,772 --> 00:37:20,010 >> STUDENT 18: Just D-S-T. Igen. 689 00:37:20,010 --> 00:37:23,057 És akkor argv, nyitó zárójel, 2.. 690 00:37:23,057 --> 00:37:23,200 Igen. 691 00:37:23,200 --> 00:37:26,720 És akkor w helyett r. 692 00:37:26,720 --> 00:37:27,620 Igen. 693 00:37:27,620 --> 00:37:29,630 >> JASON HIRSCHHORN: Remek. 694 00:37:29,630 --> 00:37:31,360 Következő pár sor. 695 00:37:31,360 --> 00:37:34,040 Továbbá, ha valaki már a dolgokat, hogy adjunk sorok tettünk, nyugodtan 696 00:37:34,040 --> 00:37:35,690 hozzá azokat is. 697 00:37:35,690 --> 00:37:37,520 Ellenőrizze, hogy nem is NULL. 698 00:37:37,520 --> 00:37:41,450 Ki tud adni nekem a kódot, azt kell elégíti ki ezt a vonalat pszeudokódja? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Archer. 701 00:37:45,870 --> 00:37:58,645 >> ARCHER: Ha az src egyenlő az egyenlők NULL vagy dst egyenlő az egyenlők 702 00:37:58,645 --> 00:38:04,590 NULL, akkor vissza - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON HIRSCHHORN: Mi az? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: vissza 2-ben? 706 00:38:08,890 --> 00:38:09,760 >> JASON HIRSCHHORN: vissza 2. 707 00:38:09,760 --> 00:38:14,400 Tehát, ha a nyílt paren src egyenlő értéke NULL, vagy - 708 00:38:14,400 --> 00:38:15,590 bármit thing's - cső? 709 00:38:15,590 --> 00:38:16,346 Pipe? 710 00:38:16,346 --> 00:38:17,140 Hívjuk meg cső. 711 00:38:17,140 --> 00:38:22,340 Cső, cső, DST egyenlő az egyenlők NULL vissza 2.. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Amíg kint vagyunk a byte - 714 00:38:26,060 --> 00:38:29,820 azt a fajta átugorja ezt a lépést A pszeudokód rész megy itt. 715 00:38:29,820 --> 00:38:31,970 >> De amíg elfogyott a byte - mit jelent ez a hang, mint a? 716 00:38:31,970 --> 00:38:34,680 Milyen típusú C szerkezet - 717 00:38:34,680 --> 00:38:36,160 de nem használja a szót, szerkezet, mivel fogunk kezdeni a 718 00:38:36,160 --> 00:38:37,350 hogy más esetekben - 719 00:38:37,350 --> 00:38:39,495 de a C-eszköz nem, hogy a hang, mint a? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19.: A hurok. 721 00:38:39,970 --> 00:38:40,980 >> JASON HIRSCHHORN: A hurok. 722 00:38:40,980 --> 00:38:43,060 Úgy hangzik, mint egy hurok. 723 00:38:43,060 --> 00:38:49,670 Szóval, aki tud adni nekem az első sorban a hurok kódot itt? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Azt is vegye, hogy milyen loop szeretné, ha adsz nekem 726 00:39:01,980 --> 00:39:03,215 ezt a kódsort. 727 00:39:03,215 --> 00:39:04,150 Háromféle. 728 00:39:04,150 --> 00:39:06,530 Kapsz felvenni. 729 00:39:06,530 --> 00:39:08,080 Azt javasoljuk, az egyik ilyen. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Melyiket akarod? 732 00:39:09,230 --> 00:39:09,960 >> AVI: FOR. 733 00:39:09,960 --> 00:39:11,460 >> JASON HIRSCHHORN: FOR. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i nulla. 735 00:39:15,180 --> 00:39:17,360 >> JASON HIRSCHHORN: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Ez a rész nem vagyok biztos benne. 737 00:39:18,570 --> 00:39:29,080 De én nem kevesebb, mint a méret A csillag forrás? 738 00:39:29,080 --> 00:39:31,128 Nem vagyok benne biztos, hogy a. 739 00:39:31,128 --> 00:39:32,580 >> JASON HIRSCHHORN: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Mert szeretné, hogy a méretű képet, igaz? 741 00:39:35,870 --> 00:39:41,090 >> JASON HIRSCHHORN: Tehát ez valószínűleg nem fog nekünk a méret a tényleges 742 00:39:41,090 --> 00:39:43,010 fájl bájtban. 743 00:39:43,010 --> 00:39:47,680 Szóval, mi mást tehettünk volna? 744 00:39:47,680 --> 00:39:48,810 Milyen más típusú hurok? 745 00:39:48,810 --> 00:39:50,180 Vagy kellene ragaszkodni a for ciklus? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: Tudnál csinálni egy WHILE hurok? 748 00:39:57,900 --> 00:40:01,350 És akkor, hogy mit tenne az you'd - 749 00:40:01,350 --> 00:40:03,930 mert van egy char * a fájl. 750 00:40:03,930 --> 00:40:07,950 Tehát, ha csak folyamatosan növekvõ, hogy amíg meg fogjuk találni a NULL karakter 751 00:40:07,950 --> 00:40:08,500 a vége? 752 00:40:08,500 --> 00:40:11,130 Vagy nem, ez nem így működik a fájlokat? 753 00:40:11,130 --> 00:40:14,300 >> JASON HIRSCHHORN: így tudjuk tartani megnő a char * 754 00:40:14,300 --> 00:40:16,340 amíg meg nem találjuk a NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20: Lényegében folyamatosan megy karakterenként amíg elérünk 756 00:40:18,580 --> 00:40:21,250 a végén a fájl. 757 00:40:21,250 --> 00:40:21,600 >> JASON HIRSCHHORN: Igen. 758 00:40:21,600 --> 00:40:22,560 Szóval, ez az, amit akarok. 759 00:40:22,560 --> 00:40:24,545 Azt akarjuk, hogy olvass, karakter a karakter, amíg nem kap 760 00:40:24,545 --> 00:40:25,080 a végén a fájl. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Igen. 762 00:40:25,375 --> 00:40:25,860 Find - 763 00:40:25,860 --> 00:40:28,540 mi a vége, vagy stoptábla a végén egy szöveges fájlban. 764 00:40:28,540 --> 00:40:28,620 >> JASON HIRSCHHORN: OK. 765 00:40:28,620 --> 00:40:30,140 Tehát, amikor eljutunk a fájl végére - Honnan tudjuk, hogy elértük 766 00:40:30,140 --> 00:40:33,200 a végén egy fájlt? 767 00:40:33,200 --> 00:40:34,710 Ha én hívom - 768 00:40:34,710 --> 00:40:35,910 úgyhogy hátrébb. 769 00:40:35,910 --> 00:40:37,550 Mi az a funkciója? 770 00:40:37,550 --> 00:40:39,360 Menjünk ezt a sort itt. 771 00:40:39,360 --> 00:40:40,630 Olvassa el a forrás fájlt. 772 00:40:40,630 --> 00:40:41,880 Ki tud adni nekem, hogy sor kódot? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> STUDENT 21: fscanf? 775 00:40:47,590 --> 00:40:49,110 >> JASON HIRSCHHORN: fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Mit tegyek, ha szeretnék olvasni, nagyon Konkrétabban, egy bájt? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: Nem tudom. 780 00:40:56,860 --> 00:40:57,110 >> JASON HIRSCHHORN: OK. 781 00:40:57,110 --> 00:40:59,380 Még egyszerűbb, mint fscanf - mi is az a - 782 00:40:59,380 --> 00:41:01,890 Szeretnék olvasni a forrás fájlt? 783 00:41:01,890 --> 00:41:03,720 Olvassa el az egy forrás állományt. 784 00:41:03,720 --> 00:41:04,850 Mi az a funkció - igen. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: Ez fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON HIRSCHHORN: fread. 787 00:41:06,070 --> 00:41:07,550 Szerintem maradjunk hogy az egyik most. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Milyen érvek nem fread veszi? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: Valószínűleg a fájl típusát, majd helyét a fájl? 791 00:41:17,410 --> 00:41:19,550 >> JASON HIRSCHHORN: Mit tudok írja itt hogy kitaláljuk, milyen típusú érveket 792 00:41:19,550 --> 00:41:20,950 fread vesz? 793 00:41:20,950 --> 00:41:23,710 >> TÖBB DIÁKOK: Man fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON HIRSCHHORN: Man fread és fwrite. 795 00:41:24,740 --> 00:41:25,980 Úgy néz ki, mintha együtt lógnak. 796 00:41:25,980 --> 00:41:29,589 Tehát fread vesz Hány érv? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23.: Négy. 798 00:41:30,920 --> 00:41:32,690 >> JASON HIRSCHHORN: Tart négy érvet. 799 00:41:32,690 --> 00:41:41,100 Beletelik egy mutatót, a méret, és hogy a dolog, ami furcsa, és néhány fájlt. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Olvassuk róla itt. 802 00:41:43,990 --> 00:41:49,370 "A funkció fread beolvassa n memb elemeket az adatok, minden egyes bájt méretű 803 00:41:49,370 --> 00:41:53,840 Hosszú, a patak által mutatott patak, tárolja őket a helyszínen 804 00:41:53,840 --> 00:41:56,170 adott mutató. " 805 00:41:56,170 --> 00:41:57,960 >> Tehát négy érvet. 806 00:41:57,960 --> 00:42:04,510 Miért nem tudok csak másolja ezt, -et itt. 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 OK. 809 00:42:10,770 --> 00:42:13,673 Tehát, aki indulhat Töltsd ki ezek az érvek nekem? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Vegye ki az űrt. 812 00:42:17,720 --> 00:42:20,530 Tedd csak src. 813 00:42:20,530 --> 00:42:23,142 Vegye ki a mutató és a csillag. 814 00:42:23,142 --> 00:42:26,102 Tedd src. 815 00:42:26,102 --> 00:42:27,050 Ezután - 816 00:42:27,050 --> 00:42:28,500 >> JASON HIRSCHHORN Szóval fogom megállítani ott, mert ez helytelen. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Igazad van a src, de hol src menni? 819 00:42:34,710 --> 00:42:35,960 >> [Közbeiktatásával VOICES] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON HIRSCHHORN: Meg kell megy itt. 822 00:42:41,610 --> 00:42:43,790 Ez az SRC - mi src egyfajta. 823 00:42:43,790 --> 00:42:44,610 Nézzünk itt. 824 00:42:44,610 --> 00:42:49,610 Ezt keresi a típusú FILE *, akkor valójában általában látni őket, mint ezt. 825 00:42:49,610 --> 00:42:57,630 Szóval ez a kér érv a típusú FILE * nevű patak, amely src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Milyen méretű dolgok szeretnénk olvasni? 828 00:43:00,410 --> 00:43:03,340 Én adtam neked ezt a probléma leírását. 829 00:43:03,340 --> 00:43:04,370 >> DIÁK 24: Egy byte egy időben. 830 00:43:04,370 --> 00:43:05,340 >> JASON HIRSCHHORN: Egy byte. 831 00:43:05,340 --> 00:43:08,205 Mekkora egy byte? 832 00:43:08,205 --> 00:43:11,642 Ennek mérete byte-ban, akkor mi is tettem ott? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25.: Egy. 834 00:43:12,910 --> 00:43:14,730 >> JASON HIRSCHHORN: Egy. 835 00:43:14,730 --> 00:43:17,020 Rendben. 836 00:43:17,020 --> 00:43:19,940 Mérete egységben byte, így 1-1 bájt. 837 00:43:19,940 --> 00:43:22,284 Hány akarok olvasni egy időben. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26.: Egy? 839 00:43:23,520 --> 00:43:24,270 >> JASON HIRSCHHORN: Egy dolog. 840 00:43:24,270 --> 00:43:28,540 Szeretnék olvasni egy dolog méretben 1, egy falatot egy időben. 841 00:43:28,540 --> 00:43:32,110 És hol tegyem meg, ha már olvasni? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27.: Cél? 844 00:43:36,510 --> 00:43:39,270 >> JASON HIRSCHHORN: Szóval nem tudod egyenesen a környéken. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28.: Meg fogsz put azt egy harmadik mutató? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27.: a cél. 847 00:43:41,780 --> 00:43:42,270 >> JASON HIRSCHHORN: OK. 848 00:43:42,270 --> 00:43:42,630 Igen. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29.: A kijelentik valamit jár, mint egy átmeneti tároló korábban. 850 00:43:46,820 --> 00:43:47,350 >> JASON HIRSCHHORN: OK. 851 00:43:47,350 --> 00:43:50,080 Add csak ide. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29.: Egy másik fájl mutató, talán? 853 00:43:53,930 --> 00:43:54,220 >> JASON HIRSCHHORN: OK. 854 00:43:54,220 --> 00:43:55,585 Tehát ez érvénytelen csillag - 855 00:43:55,585 --> 00:43:57,750 ez egyfajta űr csillag, így nem kell, hogy a fájl mutatót. 856 00:43:57,750 --> 00:44:02,520 És ha olvasok egy bájt, ahol lenne egy jó hely 857 00:44:02,520 --> 00:44:03,850 tárolni egy bájt? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29.: Egy sor? 859 00:44:04,660 --> 00:44:05,770 >> JASON HIRSCHHORN: Egy sor. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 És mi van még valami, ami csak mérete egy bájt? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENT 30: A char *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENT 29.: Igen. 865 00:44:18,530 --> 00:44:19,880 >> JASON HIRSCHHORN: A char * nem egy bájt. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29.: A kar. 867 00:44:20,440 --> 00:44:21,810 >> JASON HIRSCHHORN: A karakter egy byte. 868 00:44:21,810 --> 00:44:22,920 Nem igaz? 869 00:44:22,920 --> 00:44:26,740 Így hívjuk ezt a puffer egy általános nevet használja ezeket a dolgokat, hogy tárolja 870 00:44:26,740 --> 00:44:27,910 valami átmenetileg. 871 00:44:27,910 --> 00:44:30,880 Szóval hozzon létre egy puffer. 872 00:44:30,880 --> 00:44:31,150 Nem igaz? 873 00:44:31,150 --> 00:44:32,990 De ez nem fog egy void *. 874 00:44:32,990 --> 00:44:38,660 Így talán igazad van, hogy a kell egy 0 méretű puffer. 875 00:44:38,660 --> 00:44:41,070 Így tárolja egy - 876 00:44:41,070 --> 00:44:41,280 jobbra. 877 00:44:41,280 --> 00:44:43,560 >> Mert ez itt - char puffer egy karakter, de 878 00:44:43,560 --> 00:44:45,110 ez vesz void * - 879 00:44:45,110 --> 00:44:45,870 a mutató. 880 00:44:45,870 --> 00:44:50,640 Így tudtam ezt, és most puffer a mutató. 881 00:44:50,640 --> 00:44:53,214 Mi mást tehettem volna? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT 31.: Tegyen egy csillag mellett char. 883 00:44:55,775 --> 00:44:58,380 >> JASON HIRSCHHORN: tudtam létrehozta az char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Mi a másik dolog, amit tehetek? 886 00:45:03,131 --> 00:45:04,050 Vagy menjünk ezzel. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, akkor mi tegyem itt? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> STUDENT 31.: Buffer. 890 00:45:09,310 --> 00:45:10,560 >> JASON HIRSCHHORN: Buffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Buffer egy mutató egy char. 893 00:45:14,500 --> 00:45:19,480 És azon a helyen, mi amivel egy byte a valami, amit olvastam. 894 00:45:19,480 --> 00:45:19,980 Igen. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Csak egy gyors kérdés. 897 00:45:21,230 --> 00:45:24,440 Szeretné malloc buffer? 898 00:45:24,440 --> 00:45:25,930 >> JASON HIRSCHHORN: Ki lehet választ erre a kérdésre? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: Nos, ez nem igazán pont, hogy semmit most, így - 900 00:45:30,210 --> 00:45:32,610 >> JASON HIRSCHHORN: De vajon szeretnénk malloc ez? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32: Ha úgy döntesz, hogy csinálni, hogy Így azt hiszem, igen, mert akkor lenne szükség 902 00:45:35,600 --> 00:45:36,990 Néhány helyen azt, hogy pont. 903 00:45:36,990 --> 00:45:38,350 >> JASON HIRSCHHORN: Vajon kell malloc ez? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: Ha meg akarsz használja kívül a hurok. 905 00:45:40,580 --> 00:45:42,524 >> JASON HIRSCHHORN: Megyünk használja kívül a hurok? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: Igen. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35.: Várjon. 908 00:45:44,860 --> 00:45:46,980 Nem akarjuk, hogy állapítsa meg, hogy a hurok, hogy azon túl? 909 00:45:46,980 --> 00:45:50,100 >> JASON HIRSCHHORN: Azt hiszem van néhány pszeudo WHILE hurok, hogy itt vagyunk 910 00:45:50,100 --> 00:45:51,950 , hogy kitaláljam, hogy még nem jutottam el még. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Nem kell malloc rá. 913 00:45:56,010 --> 00:45:59,310 Mi működő fő, ez csak akkor fog használni ezen belül hurok. 914 00:45:59,310 --> 00:46:00,540 Nem kell, hogy létezik kívül. 915 00:46:00,540 --> 00:46:02,340 >> Tehát ez lehet egy helyi változót. 916 00:46:02,340 --> 00:46:03,925 Van egy mutatót egy helyi változót. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: De ez nem mutat semmit. 919 00:46:09,590 --> 00:46:11,540 >> JASON HIRSCHHORN: Nem, ez nem inicializálni semmit. 920 00:46:11,540 --> 00:46:12,790 De nem fogunk használni is. 921 00:46:12,790 --> 00:46:15,300 Fogunk tenni valamit ez az első alkalom, hogy használja. 922 00:46:15,300 --> 00:46:16,580 Tehát úgy tűnik, rendben van. 923 00:46:16,580 --> 00:46:17,780 Tehát nem kell malloc itt. 924 00:46:17,780 --> 00:46:19,360 És azt gondolom, hogy ez rendben van, ahogy van. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 OK. 927 00:46:25,790 --> 00:46:27,190 Megvan a fread sor. 928 00:46:27,190 --> 00:46:28,490 Csináljuk a következő sorban. 929 00:46:28,490 --> 00:46:32,984 >> Ha azt akarjuk, hogy írni egy fájlt, ami egy jó függvényt használni erre? 930 00:46:32,984 --> 00:46:33,770 >> STUDENT 37: fwrite? 931 00:46:33,770 --> 00:46:35,140 >> STUDENT 38: fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON HIRSCHHORN: fprintf egy. 933 00:46:36,010 --> 00:46:37,260 Mi a másik? 934 00:46:37,260 --> 00:46:37,680 >> STUDENT 39. fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON HIRSCHHORN: fwrite. 936 00:46:38,510 --> 00:46:41,250 És mi célból, fwrite, amit láttam itt, 937 00:46:41,250 --> 00:46:42,500 valószínűleg a jobb választás. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Beletelik négy érvet is. 940 00:46:53,950 --> 00:46:57,570 Nishant, tudsz adni nekem az érvek? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Az első fog hogy csak puffer. 942 00:47:00,570 --> 00:47:02,210 >> JASON HIRSCHHORN: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: A második ember csak lesz 1. 944 00:47:06,752 --> 00:47:09,510 Harmadik lesz 1. 945 00:47:09,510 --> 00:47:11,470 És a negyedik lesz a DST. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON HIRSCHHORN: Van valakinek bármilyen kérdése van a vonal? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Jól néz ki. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Most úgy néz ki, az egyetlen dolog, vagyunk hiányzik - valójában, írjunk 952 00:47:34,250 --> 00:47:35,090 az utolsó sorban. 953 00:47:35,090 --> 00:47:36,300 Zárja le a fájlokat. 954 00:47:36,300 --> 00:47:38,880 Ki tudja fejezni minket írásban az utóbbi két sor? 955 00:47:38,880 --> 00:47:39,120 Igen. 956 00:47:39,120 --> 00:47:39,850 Sajnos, mi a neve? 957 00:47:39,850 --> 00:47:40,580 >> Lucy: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON HIRSCHHORN: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> Lucy: fclose src majd fclose célállomást. 960 00:47:47,560 --> 00:47:52,430 >> JASON HIRSCHHORN: fclose, nyitott paren, src, közel paren, pontosvessző. 961 00:47:52,430 --> 00:47:53,680 És fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 igen? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: Open zárójelben, a DST majd pontosvessző. 965 00:48:01,710 --> 00:48:02,520 >> JASON HIRSCHHORN: Remek. 966 00:48:02,520 --> 00:48:04,338 És mit kell tartalmaznia a végén? 967 00:48:04,338 --> 00:48:05,210 >> Lucy: vissza 0-ra. 968 00:48:05,210 --> 00:48:05,570 >> JASON HIRSCHHORN: vissza 0-ra. 969 00:48:05,570 --> 00:48:06,820 Muszáj? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Csak egy kérdés. 972 00:48:12,590 --> 00:48:14,957 Muszáj, hogy tartalmazza return 0? 973 00:48:14,957 --> 00:48:16,240 >> TÖBB DIÁKOK: Nem. 974 00:48:16,240 --> 00:48:16,430 >> JASON HIRSCHHORN: Nem. 975 00:48:16,430 --> 00:48:18,090 Főoldal csinálja automatikusan ha kap a végén. 976 00:48:18,090 --> 00:48:20,580 De azt hiszem, jó, hogy tartalmazza azt kifejezetten. 977 00:48:20,580 --> 00:48:23,860 Különösen, ha mi vissza más dolog az egész programot. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Ez az, amit mi hiányzik - 980 00:48:26,230 --> 00:48:28,520 Míg az, ami? 981 00:48:28,520 --> 00:48:31,630 Ki tudja gondolni néhány - 982 00:48:31,630 --> 00:48:35,240 van bizonyos értelemben, amit a dolgok mehet oda? 983 00:48:35,240 --> 00:48:37,350 Akkor is, ha ez csak néhány pszeudokódja mint a nyelv? 984 00:48:37,350 --> 00:48:41,330 >> Mi igazán - mi akarunk menni, amíg? 985 00:48:41,330 --> 00:48:41,980 Igen, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: A fájl vége. 987 00:48:43,240 --> 00:48:44,990 >> JASON HIRSCHHORN: A fájl vége. 988 00:48:44,990 --> 00:48:49,280 Szóval mit értesz fájl vége? 989 00:48:49,280 --> 00:48:50,955 >> Lucy: Ha eléri a a fájl végén, stop. 990 00:48:50,955 --> 00:48:51,240 >> JASON HIRSCHHORN: OK. 991 00:48:51,240 --> 00:48:53,460 Tehát, ha elérjük a végét a fájl. 992 00:48:53,460 --> 00:48:56,893 Honnan tudjuk, mikor elértük a végén a fájl? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: Azt hiszem, puffer lesz beállítva NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41: Buffer nyilvánítják a cikluson belül. 995 00:49:01,885 --> 00:49:03,670 >> JASON HIRSCHHORN: Gondolja puffer lesz állítva NULL. 996 00:49:03,670 --> 00:49:05,850 Miért puffer lehet állítani, hogy NULL? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40: Mert ha fread, próbálunk tenni 998 00:49:10,420 --> 00:49:13,528 semmit sem puffer. 999 00:49:13,528 --> 00:49:13,980 >> JASON HIRSCHHORN: OK. 1000 00:49:13,980 --> 00:49:15,550 Szóval azt gondolod fread - 1001 00:49:15,550 --> 00:49:19,000 amikor elértük a végét fájl, mi fread fog csinálni? 1002 00:49:19,000 --> 00:49:21,230 Azt hiszem, ez a kérdés nekünk kell kitalálni. 1003 00:49:21,230 --> 00:49:21,960 Mit fread csinálni? 1004 00:49:21,960 --> 00:49:25,640 Vajon NULLA pufferben, vagy csinál valami mást? 1005 00:49:25,640 --> 00:49:27,510 Hogyan lehet kitalálni, hogy mit csinál? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENT 42.: Man. 1007 00:49:28,190 --> 00:49:28,810 >> JASON HIRSCHHORN: Man. 1008 00:49:28,810 --> 00:49:32,280 Tehát nézzük meg itt. 1009 00:49:32,280 --> 00:49:34,000 Visszatérési értéke. 1010 00:49:34,000 --> 00:49:39,620 A siker, fread és fwrite vissza a tételek száma olvasott vagy írt. 1011 00:49:39,620 --> 00:49:43,700 Ez a szám megegyezik a byte-ok száma át csak a mérete 1. 1012 00:49:43,700 --> 00:49:47,780 Ha hiba lép fel, vagy a végén a fájl jön létre, a visszatérési érték a 1013 00:49:47,780 --> 00:49:51,490 rövid elemszám, vagy 0-ra. 1014 00:49:51,490 --> 00:49:57,860 >> Tehát a mi szempontunkból, ha fread eléri a végén a fájl, és olvas 1015 00:49:57,860 --> 00:50:02,100 a fájl vége, semmi sem maradt , hogy olvassa el, hogy mi a helyzet, hogy visszatérjen? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON HIRSCHHORN: Mi az? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENT 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON HIRSCHHORN: Zero. 1020 00:50:05,690 --> 00:50:06,940 Ez megy vissza nullára. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Tehát tudjuk, hogy fread, amikor már végére ért a fájlt, megy 1023 00:50:13,010 --> 00:50:13,690 vissza nullára. 1024 00:50:13,690 --> 00:50:17,460 Hogyan tudjuk használni, hogy mi előnye? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: lehet, hogy egy változót kívül a hurok nevű csekket. 1026 00:50:21,733 --> 00:50:27,040 Ha az ellenőrzés egyenlő - 1027 00:50:27,040 --> 00:50:28,190 most - egy. 1028 00:50:28,190 --> 00:50:28,920 >> JASON HIRSCHHORN: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: És akkor véget IF adatok után fread mondja, ha 1030 00:50:38,050 --> 00:50:42,600 fread nullával egyenlő - 1031 00:50:42,600 --> 00:50:43,850 no. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON HIRSCHHORN: Ki segíthet Avi ki? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Mi az érték által visszaadott fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON HIRSCHHORN: Csak ment fölé. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Hogyan képviseletére? 1038 00:50:55,450 --> 00:50:57,190 >> JASON HIRSCHHORN: Így tér vissza - mondjuk nézz fel itt - vissza 1039 00:50:57,190 --> 00:50:59,340 size_t, amely lényegében egy egész szám. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Így tér vissza az egész. 1042 00:51:03,410 --> 00:51:05,160 És a mi esetünkben, hogy lesz vissza 1 vagy 0 - 1043 00:51:05,160 --> 00:51:08,760 1, ha olvas egy dolog - egy bájt, , és 0, ha már a végére ért. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Tehát, ha fread - 1046 00:51:16,450 --> 00:51:16,855 igen? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: Nem lehet, hogy csak fel a teljes fread (puffer, 1, 1, src) a 1048 00:51:20,330 --> 00:51:21,660 while ciklus? 1049 00:51:21,660 --> 00:51:26,510 >> JASON HIRSCHHORN: Szóval javasol ezt a ott? 1050 00:51:26,510 --> 00:51:27,600 >> [Közbeiktatásával VOICES] 1051 00:51:27,600 --> 00:51:29,520 >> JASON HIRSCHHORN: Várj. 1052 00:51:29,520 --> 00:51:30,885 Szóval megszabadítja ezt. 1053 00:51:30,885 --> 00:51:33,300 Szóval javasolja elhelyezés fread be ott? 1054 00:51:33,300 --> 00:51:35,457 Mit is mozgatni ha azt akarod, hogy? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45: A puffer külső. 1056 00:51:36,740 --> 00:51:38,110 >> JASON HIRSCHHORN: meg kell is mozog ez itt. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: De vajon, hogy folyamatosan mozgassa előre? 1058 00:51:41,700 --> 00:51:42,950 >> [Közbeiktatásával VOICES] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON HIRSCHHORN: OK. 1061 00:51:47,470 --> 00:51:50,570 Tehát ez az, amit Okshar javasolt. 1062 00:51:50,570 --> 00:51:51,930 Úgy készítjük puffer. 1063 00:51:51,930 --> 00:51:57,020 Mi AMÍG fread, akkor fwrite. 1064 00:51:57,020 --> 00:51:59,760 Gondolatok erről? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46.: Az egyetlen kérdés az, hogy ténylegesen végrehajtja a parancsot fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON HIRSCHHORN: jó kérdés. 1067 00:52:06,175 --> 00:52:11,050 Amikor amivel egy függvényhívás belsejében egy állapot, nem hogy 1068 00:52:11,050 --> 00:52:12,300 függvényhívás végre? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Láttunk példát ilyet. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Nem igaz? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENT 46.: OK. 1074 00:52:26,125 --> 00:52:26,590 Igen. 1075 00:52:26,590 --> 00:52:30,140 Tehát ez végre. 1076 00:52:30,140 --> 00:52:31,790 >> JASON HIRSCHHORN: Láttuk dolgokat ilyennek, ahol van egy 1077 00:52:31,790 --> 00:52:33,550 függvényhívás belsejében egy állapot. 1078 00:52:33,550 --> 00:52:35,540 Ez azt függvényhívás végre? 1079 00:52:35,540 --> 00:52:36,350 Igen. 1080 00:52:36,350 --> 00:52:37,410 Tehát a válasz: igen. 1081 00:52:37,410 --> 00:52:41,010 Ez a funkció hívás végrehajtani. 1082 00:52:41,010 --> 00:52:42,418 De ismétlem, ez, amit akarunk? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Mi az egyik módja, tudtuk kitalálni , ha ez az, amit akarunk? 1085 00:52:52,204 --> 00:52:53,470 >> TÖBB DIÁKOK: elindul? 1086 00:52:53,470 --> 00:52:54,460 >> JASON HIRSCHHORN: tudtuk futtatni. 1087 00:52:54,460 --> 00:52:57,500 De mielőtt ezt tesszük, amit lehetett is érvelni ezen keresztül. 1088 00:52:57,500 --> 00:52:57,920 Ha - 1089 00:52:57,920 --> 00:53:01,920 mondjuk, hogy egy byte a mi fájl, mi lesz itt, 1090 00:53:01,920 --> 00:53:02,660 mi lesz, hogy ezt a kódot. 1091 00:53:02,660 --> 00:53:03,620 Ez fog futni. 1092 00:53:03,620 --> 00:53:07,780 fread visszatér egy bájt és tárolja a puffer. 1093 00:53:07,780 --> 00:53:11,290 És ezt értékelni fogja, hogy 1, jobb, miután visszatér 1.. 1094 00:53:11,290 --> 00:53:12,640 >> Tehát míg 1. 1095 00:53:12,640 --> 00:53:15,325 Ez azt jelenti, a kód belsejében A WHILE hurok végre? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47.: Igen. 1097 00:53:15,453 --> 00:53:16,040 Ez igaz. 1098 00:53:16,040 --> 00:53:16,290 >> JASON HIRSCHHORN: Igen. 1099 00:53:16,290 --> 00:53:17,490 1. igaz. 1100 00:53:17,490 --> 00:53:18,240 Ez nem 0-ra. 1101 00:53:18,240 --> 00:53:20,360 Tehát a kód belsejében itt is végre. 1102 00:53:20,360 --> 00:53:22,300 Így fogjuk írni, hogy. 1103 00:53:22,300 --> 00:53:25,340 Majd menjen vissza erre sor ismét. 1104 00:53:25,340 --> 00:53:26,850 Most már - 1105 00:53:26,850 --> 00:53:28,550 mi vagyunk a végén a fájl. 1106 00:53:28,550 --> 00:53:30,980 Azt olvassuk végétől a fájl, mert csak egy byte-ban is. 1107 00:53:30,980 --> 00:53:34,270 >> Fread visszatér 0, raktárak valami pufferben. 1108 00:53:34,270 --> 00:53:35,890 Őszintén szólva nem tudom, mi tárolja a puffer. 1109 00:53:35,890 --> 00:53:38,380 Mi valószínűleg felnéz , hogy mit csinál. 1110 00:53:38,380 --> 00:53:40,130 Hogy Őszintén szólva nem tudom. 1111 00:53:40,130 --> 00:53:43,090 Nem tudjuk, kit érdekel, mi tárolja a puffer? 1112 00:53:43,090 --> 00:53:44,010 De ez vissza 0-ra. 1113 00:53:44,010 --> 00:53:45,440 És míg a 0 végre? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> 0 pedig nem működik. 1116 00:53:51,180 --> 00:53:54,030 Így aztán lefelé itt. 1117 00:53:54,030 --> 00:53:58,870 Akkor most, hogy a kezeket, ha ez az a kód, meg kell futtatni, vagy ha 1118 00:53:58,870 --> 00:54:00,140 kell tennie változások először. 1119 00:54:00,140 --> 00:54:02,180 Tehát, ha úgy gondolja, - meg kell szavazni. 1120 00:54:02,180 --> 00:54:06,885 Ha úgy gondolja, meg kell futtatni ezt a kódot ahogy van, kérem emelje fel a kezét. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> OK. 1123 00:54:13,400 --> 00:54:14,315 Van egy - 1124 00:54:14,315 --> 00:54:17,260 van egy kérdés, aggodalomra ad okot? 1125 00:54:17,260 --> 00:54:18,080 Igen. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: Miután mozgás puffer kívül a hurok, mi is 1127 00:54:21,240 --> 00:54:22,670 kell malloc ez? 1128 00:54:22,670 --> 00:54:23,310 >> JASON HIRSCHHORN: jó kérdés. 1129 00:54:23,310 --> 00:54:26,670 Miután mozgatni puffer kívül loop, kell még malloc ez? 1130 00:54:26,670 --> 00:54:28,400 Ez egy köre kérdés. 1131 00:54:28,400 --> 00:54:32,130 Ha inicializálni puffer kívül Ennek hurok fog létezni 1132 00:54:32,130 --> 00:54:33,534 belsejében a hurok? 1133 00:54:33,534 --> 00:54:35,230 >> TÖBB DIÁKOK: Igen. 1134 00:54:35,230 --> 00:54:35,580 >> JASON HIRSCHHORN: Igen. 1135 00:54:35,580 --> 00:54:40,100 Hatálya kiterjed belsejében a hurok, És tényleg, bármi alatta belülről 1136 00:54:40,100 --> 00:54:42,460 ezt a kódot, beleértve a a dolgok idebent. 1137 00:54:42,460 --> 00:54:43,930 Tehát nem kell malloc rá. 1138 00:54:43,930 --> 00:54:47,766 Ez egy helyi változó, és annak hatályát is magában foglalja a hurok. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: Szükség van szabad ez? 1140 00:54:49,540 --> 00:54:51,770 >> JASON HIRSCHHORN: Vajon kell szabad buffer? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Igen, ha nem malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON HIRSCHHORN: Vajon kell szabad buffer? 1143 00:54:55,750 --> 00:54:57,160 Mi nem. 1144 00:54:57,160 --> 00:55:01,280 Ismét, ez egy helyi változó, így nem kell kiszabadítani. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Nézzük meg, mi történik. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Így van ez inicializált. 1149 00:55:18,220 --> 00:55:20,830 Ez volt, amit valami Marcus korábban javasolt. 1150 00:55:20,830 --> 00:55:25,340 Tehát, hogy a hiba, a változó puffer inicializálatlan, amikor itt használt. 1151 00:55:25,340 --> 00:55:26,590 >> Hogyan erősít ez? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50: malloc ez? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51: Egyenlő NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Mondd puffer értéke NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON HIRSCHHORN: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Jól néz ki. 1159 00:55:40,770 --> 00:55:42,410 Van most. 1160 00:55:42,410 --> 00:55:45,630 Hozzunk létre valamit, hogy próbálja a másolást. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Tehát a szöveges fájl. 1163 00:56:10,490 --> 00:56:11,740 Hogyan lehet futtatni ezt a programot? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Igen. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENT 53: Megteheti dot perjel cp, test.txt. 1167 00:56:22,230 --> 00:56:25,140 És akkor nevet egy másik fájlt amely tárolja be. 1168 00:56:25,140 --> 00:56:25,510 >> JASON HIRSCHHORN: OK. 1169 00:56:25,510 --> 00:56:27,380 Hívjuk meg out.txt. 1170 00:56:27,380 --> 00:56:28,630 Cool? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg hiba. 1173 00:56:34,320 --> 00:56:35,570 Gondolatok a szegmens hiba? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Ez nagyszerű. 1176 00:56:41,390 --> 00:56:45,040 Hogyan lehet kideríteni, hogy hol A szegmens hiba? 1177 00:56:45,040 --> 00:56:45,680 Mi az? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENT 54: gdb. 1179 00:56:45,990 --> 00:56:47,240 >> JASON HIRSCHHORN: gdb. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Futunk gdb írásban gdb dot perjel, a neve a programot. 1182 00:56:55,300 --> 00:56:57,020 Nem parancssori paramétereket is. 1183 00:56:57,020 --> 00:56:59,570 Megyünk be a töréspontot fő. 1184 00:56:59,570 --> 00:57:02,190 Ha akarom kezdeni gdb, mit tegyek? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON HIRSCHHORN: R. És aztán mi lesz? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55: az érvek? 1188 00:57:09,400 --> 00:57:10,650 >> JASON HIRSCHHORN: Akkor az parancssori argumentumok. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Sétáljunk át. 1191 00:57:17,120 --> 00:57:19,090 N csak visz soronként. 1192 00:57:19,090 --> 00:57:21,450 Én megyek, amíg Kapom seg hibám. 1193 00:57:21,450 --> 00:57:22,700 Ez az én hibám szegmensben. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Úgy néz ki, mint fread okozott én seg hibám. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Tudom, hogy fread okozta a szegmens hibám, mert ez volt a 1198 00:57:32,770 --> 00:57:34,950 sorban már csak végre. 1199 00:57:34,950 --> 00:57:36,530 >> És az egyetlen dolog, ami történik ezen a vonalon - 1200 00:57:36,530 --> 00:57:37,520 Két dolog történt. 1201 00:57:37,520 --> 00:57:40,610 Fread ment, aztán voltunk csinál valami ellenőrzése közben. 1202 00:57:40,610 --> 00:57:44,820 Hajlandó vagyok fogadni, hogy a WHILE ellenőrzése nem okozza a szegmens hibám. 1203 00:57:44,820 --> 00:57:46,950 Valószínűleg, fread volt ami az én seg hibám. 1204 00:57:46,950 --> 00:57:49,260 Azt is látni valamit, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Memória másolás. 1206 00:57:50,500 --> 00:57:53,820 Úgy hangzik, mint a mozgó emlék egyik helyről a másikra. 1207 00:57:53,820 --> 00:57:56,890 Úgy hangzik, mint valami, ami történni A fread, talán egy kis memória 1208 00:57:56,890 --> 00:57:58,910 mozgó innen van. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Menjünk át újra. 1211 00:58:03,860 --> 00:58:06,900 Hogyan kezdjem át és futtassa újra? 1212 00:58:06,900 --> 00:58:08,092 Igen. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: Mit kell tenni -jel előtti puffert? 1214 00:58:15,140 --> 00:58:17,800 >> JASON HIRSCHHORN: Tehát jel előtt buffer adna nekem a címét 1215 00:58:17,800 --> 00:58:22,330 puffer, amely egy char *. 1216 00:58:22,330 --> 00:58:25,250 Fussunk át ezt még egyszer. 1217 00:58:25,250 --> 00:58:28,248 Hogyan végig még egyszer? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: Can csak típus fut újra? 1219 00:58:29,210 --> 00:58:32,050 >> JASON HIRSCHHORN: Csak írd be újra futni. 1220 00:58:32,050 --> 00:58:33,415 Szóval nem fog végre ezt a sort. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Tehát puffer NULL pointer. 1223 00:58:39,240 --> 00:58:40,490 Helyes? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Ez mutat - lássuk. 1226 00:58:47,060 --> 00:58:48,500 Ha megvan a - 1227 00:58:48,500 --> 00:58:50,430 rajzoljon egy gyors képet a. 1228 00:58:50,430 --> 00:58:53,500 Lehet mindenki lássa, Írok ide? 1229 00:58:53,500 --> 00:59:02,890 >> Így a stack, van egy helyi változó, és ez az úgynevezett puffer, és 1230 00:59:02,890 --> 00:59:08,230 ez a mutató egy char. 1231 00:59:08,230 --> 00:59:10,325 Mi címe ez char-nél? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON HIRSCHHORN: Így van. 1234 00:59:13,400 --> 00:59:14,200 Ez az, amit ez az egész. 1235 00:59:14,200 --> 00:59:17,600 Itt, belső puffer tárolja 0x0. 1236 00:59:17,600 --> 00:59:20,480 Ez az, amit mi - a beállítás van most. 1237 00:59:20,480 --> 00:59:27,540 Szóval ez a vonal, fread, helyez valamit A forrás, ahol? 1238 00:59:27,540 --> 00:59:30,560 Ebbe a mezőbe, vagy ezt a dobozt? 1239 00:59:30,560 --> 00:59:31,060 Melyik box? 1240 00:59:31,060 --> 00:59:33,290 Bal box vagy jobbra box? 1241 00:59:33,290 --> 00:59:34,750 Ez a jog box. 1242 00:59:34,750 --> 00:59:38,440 >> Ebből következik a mutatót, és mondja itt. 1243 00:59:38,440 --> 00:59:42,620 Amikor megpróbálunk kapcsolatot memóriába helyszín 0, mit kapunk? 1244 00:59:42,620 --> 00:59:45,050 A szegmentációs hiba. 1245 00:59:45,050 --> 00:59:46,550 Ez a hiba már most. 1246 00:59:46,550 --> 00:59:46,970 Igen. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: Nem kell , hogy csillag buffer? 1248 00:59:48,410 --> 00:59:49,180 Vagy nem? 1249 00:59:49,180 --> 00:59:50,050 A fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON HIRSCHHORN: Tehát fread vesz a mutató. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Így halad pufferben. 1253 00:59:55,900 --> 00:59:58,980 És akkor majd de-referencia- ez valahol fread. 1254 00:59:58,980 --> 01:00:00,700 De ismétlem, láttuk, hogy vesz egy mutatót. 1255 01:00:00,700 --> 01:00:02,560 Nem kell, hogy adja át a csillag puffer. 1256 01:00:02,560 --> 01:00:05,350 Ez lenne halad ez amit itt van. 1257 01:00:05,350 --> 01:00:07,980 És ez valószínűleg nekünk egy hiba mert mi de-hivatkozás is. 1258 01:00:07,980 --> 01:00:08,150 >> Nem igaz? 1259 01:00:08,150 --> 01:00:10,690 Amikor visszahivatkozás Ez a mutató, ha a próbáljuk elérni ezt a helyet, 1260 01:00:10,690 --> 01:00:13,140 mi megy egy hiba - szegmentációs hiba. 1261 01:00:13,140 --> 01:00:15,800 Így - 1262 01:00:15,800 --> 01:00:16,690 hoppá. 1263 01:00:16,690 --> 01:00:19,090 Fogunk lépni ki a gdb. 1264 01:00:19,090 --> 01:00:20,160 A sor - 1265 01:00:20,160 --> 01:00:22,990 mi a probléma - igaza van itt ezen a vonalon. 1266 01:00:22,990 --> 01:00:26,410 És ez a probléma, mert Az ebben a sorban. 1267 01:00:26,410 --> 01:00:31,780 >> Hogyan lehet létrehozni egy doboz, elérhető a fread. 1268 01:00:31,780 --> 01:00:31,980 Nem igaz? 1269 01:00:31,980 --> 01:00:35,190 Létre kell hoznunk egy doboz, ami egy byte nagy, akkora, mint egy char. 1270 01:00:35,190 --> 01:00:38,590 De tudnunk kell, hogy a dobozban, hogy hozzáférhető ha ezt a funkciót végrehajtja. 1271 01:00:38,590 --> 01:00:39,390 Szóval, ha - 1272 01:00:39,390 --> 01:00:39,640 igen. 1273 01:00:39,640 --> 01:00:40,440 Valami ötlet? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: csak állítsa be véletlenszerű karakter. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Csak nem char buffer egyenlő a karakter. 1277 01:00:51,640 --> 01:00:53,795 És akkor, ha már a puffer ott - 1278 01:00:53,795 --> 01:00:54,110 >> JASON HIRSCHHORN: Várjon. 1279 01:00:54,110 --> 01:00:55,110 Char puffer? 1280 01:00:55,110 --> 01:00:55,880 Tehát nem csillag? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Igen. 1282 01:00:56,390 --> 01:00:58,560 Vegye ki a csillag. 1283 01:00:58,560 --> 01:01:00,690 Megegyezik egy random karaktert. 1284 01:01:00,690 --> 01:01:01,460 >> JASON HIRSCHHORN: OK. 1285 01:01:01,460 --> 01:01:02,420 Így adj egyet. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Mint egy, vagy ilyesmi. 1287 01:01:03,170 --> 01:01:06,160 És akkor, ha van puffer ott, akkor egy - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: Star? 1289 01:01:06,420 --> 01:01:07,650 Ó, nem, a jelet. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60.: A jel. 1291 01:01:09,000 --> 01:01:09,470 >> JASON HIRSCHHORN: OK. 1292 01:01:09,470 --> 01:01:11,320 És mi a helyzet a fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60.: A jel újra. 1294 01:01:14,150 --> 01:01:14,320 >> JASON HIRSCHHORN: Rendben. 1295 01:01:14,320 --> 01:01:20,970 Tehát az ötlet az, hogy hozzon létre egy char és fel valamit, majd 1296 01:01:20,970 --> 01:01:22,612 írni a karakter. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Igen. 1298 01:01:23,760 --> 01:01:25,916 >> JASON HIRSCHHORN: Milyen gondolnak az emberek? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: Ez szövevényes. 1300 01:01:27,770 --> 01:01:28,460 >> JASON HIRSCHHORN: OK. 1301 01:01:28,460 --> 01:01:29,760 Hadd dolgozzon ki. 1302 01:01:29,760 --> 01:01:35,720 Ez alkalommal fogom felhívni ezt piros a verem itt, és akkor 1303 01:01:35,720 --> 01:01:36,410 lesz - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Bocsánat. 1306 01:01:38,060 --> 01:01:45,930 Tehát ebben az időben van valami úgynevezett puffer, és ez a halom. 1307 01:01:45,930 --> 01:01:48,430 Helyes? 1308 01:01:48,430 --> 01:01:51,520 És mi vagyunk megtakarítás, hogy egy kezdetben. 1309 01:01:51,520 --> 01:01:53,830 >> Aztán ott van a hívás fread. 1310 01:01:53,830 --> 01:02:01,300 Mit fread nem is tart egy byte-ból a fájlt, és mondja valahol. 1311 01:02:01,300 --> 01:02:04,570 Ez teszi azt, amit a dolog van mutatva. 1312 01:02:04,570 --> 01:02:09,130 Nos, mielőtt volt ez a cím - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Most mi cím van még? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: Mindegy cím puffer. 1316 01:02:14,650 --> 01:02:15,970 >> JASON HIRSCHHORN: Mindegy cím puffer. 1317 01:02:15,970 --> 01:02:22,370 Ez valószínűleg lesz valami ilyesmi. 1318 01:02:22,370 --> 01:02:26,950 Valószínűleg fog kezdeni a b és F, és ezt követően hat másik 1319 01:02:26,950 --> 01:02:27,970 hexadecimális számjegy. 1320 01:02:27,970 --> 01:02:28,480 Nem számít. 1321 01:02:28,480 --> 01:02:29,470 Néhány cím. 1322 01:02:29,470 --> 01:02:31,410 És mi halad a címet be 1323 01:02:31,410 --> 01:02:34,790 >> És mi megy, hogy mi az egyik byte dolog, azon a címen. 1324 01:02:34,790 --> 01:02:38,470 Szóval megy, hogy az egyik byte dolog benne van. 1325 01:02:38,470 --> 01:02:40,800 És akkor fogunk írni a mi valaha is benne van. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Van valakinek kérdése erről? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Aki úgy gondolja, ez a kód működni fog? 1330 01:02:54,690 --> 01:02:56,020 >> Emelje fel a kezét, ha úgy gondolja A kód működni fog. 1331 01:02:56,020 --> 01:02:57,270 Meg kell állást foglalni. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 És aki azt gondolja, ez a kód nem fog működni? 1334 01:03:02,500 --> 01:03:04,610 Emelje fel a kezét. 1335 01:03:04,610 --> 01:03:06,750 Mindenki legyen felemelték a kezét. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, hol állsz? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL: Nem tudok dönteni. 1339 01:03:10,680 --> 01:03:12,070 Kind of a közepén. 1340 01:03:12,070 --> 01:03:12,736 >> JASON HIRSCHHORN: Te a közepén. 1341 01:03:12,736 --> 01:03:13,092 Válassz egyet. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Én hiszek , és azt mondják, hogy működni fog. 1343 01:03:14,400 --> 01:03:14,660 >> JASON HIRSCHHORN: OK. 1344 01:03:14,660 --> 01:03:16,047 Itt van a hit, és azt mondják, hogy működik? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Mi történt? 1347 01:03:27,020 --> 01:03:28,270 >> [Közbeiktatásával VOICES] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON HIRSCHHORN: Nem szegmens hiba. 1350 01:03:35,950 --> 01:03:40,320 Hogyan tudjuk nézni, hogy két dolog egyenlő? 1351 01:03:40,320 --> 01:03:42,060 Két fájl azonos. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENT 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON HIRSCHHORN: Diff. 1354 01:03:45,490 --> 01:03:51,630 Diff ellenőrzi közötti különbségek két fájlt, és ha visszatér 1355 01:03:51,630 --> 01:03:52,890 semmit, ők azonosak. 1356 01:03:52,890 --> 01:03:59,030 És ha nyitunk, megkapjuk a fájlt. 1357 01:03:59,030 --> 01:04:00,490 Szóval ez volt a helyes megoldás. 1358 01:04:00,490 --> 01:04:01,780 Nézzük vissza még egyszer. 1359 01:04:01,780 --> 01:04:04,080 Igazából nem is kell inicializálni azt. 1360 01:04:04,080 --> 01:04:05,520 >> Ez valószínűleg egy kicsit tisztább, ha nem tesz 1361 01:04:05,520 --> 01:04:07,680 valami véletlen ott. 1362 01:04:07,680 --> 01:04:13,070 A lényeg, hogy, akkor szükség ahhoz, hogy Néhány hely tárolni valamit 1363 01:04:13,070 --> 01:04:15,530 fread, és hogy valami ki fwrite. 1364 01:04:15,530 --> 01:04:18,400 És ez a dolog volt, hogy vagy a helyi változót a stack - akkor 1365 01:04:18,400 --> 01:04:19,890 volna malloc'd egy kis helyet. 1366 01:04:19,890 --> 01:04:23,030 >> Tehát tulajdonképpen lehetett volna írásos malloc itt, és 1367 01:04:23,030 --> 01:04:25,420 hogy működött volna. 1368 01:04:25,420 --> 01:04:28,660 És akkor mi volna tárolás a dolgok valahol a kupac. 1369 01:04:28,660 --> 01:04:31,940 De ez valójában, valószínűleg a legelegánsabb megoldás. 1370 01:04:31,940 --> 01:04:34,490 Csak teremt helyet a stack ezek a dolgok, hogy menjen. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Szerettem volna két másik megjegyzés. 1373 01:04:38,990 --> 01:04:44,650 Ha úgy döntesz, hogy vegye be ebben, és akkor kap gólt ezen, én hozzászólások 1374 01:04:44,650 --> 01:04:47,400 a következő lenne. 1375 01:04:47,400 --> 01:04:54,300 Ezek az 1 itt van, nekem, meg mint a mágikus számok. 1376 01:04:54,300 --> 01:04:56,860 Ez az 1, tekintve fread, van értelme. 1377 01:04:56,860 --> 01:04:59,580 Ez a néhány dolog írni és olvasni. 1378 01:04:59,580 --> 01:05:03,740 >> De ez itt kell valószínűleg valami mást. 1379 01:05:03,740 --> 01:05:05,180 Tehát mi az egyik megoldás? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: mérete byte. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON HIRSCHHORN: Tetszik ez? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: mérete char. 1384 01:05:13,130 --> 01:05:13,820 >> JASON HIRSCHHORN: mérete char. 1385 01:05:13,820 --> 01:05:15,290 Igen, byte nem egy típust. 1386 01:05:15,290 --> 01:05:16,320 Tehát mérete char működik. 1387 01:05:16,320 --> 01:05:30,270 Mi volna, tetején a kód, # definiált ezt. 1388 01:05:30,270 --> 01:05:33,410 Hívott valami BYTE és ez tényleg egy char. 1389 01:05:33,410 --> 01:05:37,675 Valójában, még jobb megközelítés lehetett volna ezt - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Tudja valaki, hogy mi ez? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Bocsánat. 1394 01:05:44,840 --> 01:05:46,090 Nekem van hátra. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Várj, nem. 1397 01:05:52,200 --> 01:05:53,450 Merre vezet ez? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Tudja valaki, hogy mi ez? 1400 01:05:59,660 --> 01:06:00,950 Igen. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67: Állítólag segít szabványosítani rendszerek közötti dolog, hogy 1402 01:06:05,650 --> 01:06:08,760 van -, mint a jelöletlen egész számok amelyek 8 bájt? 1403 01:06:08,760 --> 01:06:11,785 >> JASON HIRSCHHORN: Ez pontosan így van. 1404 01:06:11,785 --> 01:06:14,310 A különböző gépek, akkora, mint egy char - 1405 01:06:14,310 --> 01:06:15,180 általában nem a char. 1406 01:06:15,180 --> 01:06:16,100 Karakterek általában egy bájt. 1407 01:06:16,100 --> 01:06:19,590 De a mérete más adattípusok különböző méretű, egy 32 bites gép 1408 01:06:19,590 --> 01:06:21,370 szemben a 64 bites gép. 1409 01:06:21,370 --> 01:06:25,180 A uint8_t mindig 8 bit - 1410 01:06:25,180 --> 01:06:27,210 mindig egy bájt. 1411 01:06:27,210 --> 01:06:29,580 >> És azt kell, hogy tartalmazza, hogy szabványos int header fájlt. 1412 01:06:29,580 --> 01:06:35,040 Tehát most, ez valószínűleg már A legjobb módja annak, hogy megírjam ezt a kódot. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Szóval megszabadulni a mágikus számok. 1415 01:06:41,450 --> 01:06:44,690 És nekem is van egy logikus típusú puffer. 1416 01:06:44,690 --> 01:06:49,450 Ez nem csak egy karakter, ez egy byte, ami az, amit várunk, hogy legyen. 1417 01:06:49,450 --> 01:06:53,400 >> És itt, most már tényleg már egy kicsit erőteljesebb. 1418 01:06:53,400 --> 01:06:55,190 Mi nem keresi, hogy egy karakter, amely - 1419 01:06:55,190 --> 01:06:58,630 Talán, ki tudja - lehet egy másik méret a különböző gépeket. 1420 01:06:58,630 --> 01:07:02,025 Mi tulajdonképpen azt mondja ez pontosan egy bájt, mindig, nem számít, mit. 1421 01:07:02,025 --> 01:07:05,810 És ha megnézzük itt, teszünk cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Mi történt? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: Lehet, hogy bekapcsolt. 1426 01:07:16,170 --> 01:07:17,880 >> JASON HIRSCHHORN: Mi az? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: Valóban? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: Nem igaz határozza meg, mint a típus. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71. De kellene kell meghatározni szabvány. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72.: Mi folyik itt? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73: meg kell határozni, hogy nagybetűs? 1434 01:07:40,210 --> 01:07:41,370 >> JASON HIRSCHHORN: Tehát ez nem # define. 1435 01:07:41,370 --> 01:07:45,490 Tulajdonképpen, ebben az esetben, én fogja használni typedef. 1436 01:07:45,490 --> 01:07:48,590 Mert mi vagyunk a használatát, mivel típus egy helyen. 1437 01:07:48,590 --> 01:07:51,990 Tehát ebben az esetben, azt valóban szeretné typedef, mint mi vagyunk nyomtat egy új típusú 1438 01:07:51,990 --> 01:07:54,490 bájt, és ez lényegében ezt. 1439 01:07:54,490 --> 01:07:56,590 Ez egy kicsit más, mint # define. 1440 01:07:56,590 --> 01:08:02,740 >> És most, a kód tökéletesen működik. 1441 01:08:02,740 --> 01:08:05,230 Szóval, megint, # define vesz valamit, helyettesíti mindenhol 1442 01:08:05,230 --> 01:08:06,780 a másik dolog. 1443 01:08:06,780 --> 01:08:07,920 Ez csak egy makró - 1444 01:08:07,920 --> 01:08:09,420 gyorsírás megszabadulni a mágikus számok. 1445 01:08:09,420 --> 01:08:11,360 De ebben az esetben, mert mi vagyunk használja, mint egyfajta - 1446 01:08:11,360 --> 01:08:12,180 itt - 1447 01:08:12,180 --> 01:08:19,880 annak érdekében, hogy a munka, meg kell a typedef bármi bájt. 1448 01:08:19,880 --> 01:08:21,840 >> És mi azt definiálta volna itt. 1449 01:08:21,840 --> 01:08:24,750 Ez nem egy struct, valójában csak egy előjel nélküli egész. 1450 01:08:24,750 --> 01:08:27,680 Ez az egyik byte hosszú. 1451 01:08:27,680 --> 01:08:31,910 Ez a kód az interneten lesz elérhető, és a mindenkinek kell most. 1452 01:08:31,910 --> 01:08:33,830 >> Tehát - 1453 01:08:33,830 --> 01:08:34,250 tökéletes - 1454 01:08:34,250 --> 01:08:41,359 13 perc van hátra, hogy menjen mint probléma meg 5. 1455 01:08:41,359 --> 01:08:44,270 Azt akarom, hogy séta copy.c együtt, aztán majd beszélünk röviden 1456 01:08:44,270 --> 01:08:47,120 a más részein A probléma beállítva. 1457 01:08:47,120 --> 01:08:48,899 Hadd húzza fel copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 És a jó dolog, most már tényleg már írt sok a kódot. 1460 01:09:08,810 --> 01:09:11,180 >> A kód írtunk szó szerint csak jött ki ide, amikor én voltam 1461 01:09:11,180 --> 01:09:13,120 írom ezt a saját. 1462 01:09:13,120 --> 01:09:16,990 De ez copy.c, képezi az alapját az első két rész 1463 01:09:16,990 --> 01:09:22,340 A probléma beállított whodunit.c, amely meg kell írni, és resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, amely a harmadik és egyben utolsó része a probléma meg, nem 1465 01:09:27,050 --> 01:09:29,529 alapján le ezt a fájlt. 1466 01:09:29,529 --> 01:09:32,200 >> Fogsz kell írni a fájlt, adunk egy sablont, amely 1467 01:09:32,200 --> 01:09:34,620 fájlt, de semmi köze copy.c. 1468 01:09:34,620 --> 01:09:38,675 De mivel copy.c az alapja Az első két rész, megyünk 1469 01:09:38,675 --> 01:09:42,000 séta most, így van jó értelemben, hogy mit csinál. 1470 01:09:42,000 --> 01:09:43,640 >> És a megjegyzéseket, hogy néhány, el. 1471 01:09:43,640 --> 01:09:45,120 Már írt néhány ilyen. 1472 01:09:45,120 --> 01:09:49,220 Először is, mi ügyelve arra, kapunk három érvet. 1473 01:09:49,220 --> 01:09:50,560 Ezután mi emlékezve a fájl nevét. 1474 01:09:50,560 --> 01:09:52,960 Így átugorja ezt a lépést, ha a kódoltuk a dolog - 1475 01:09:52,960 --> 01:09:54,700 amikor a cp. 1476 01:09:54,700 --> 01:09:56,750 De itt, ők így egy kicsit tisztább. 1477 01:09:56,750 --> 01:09:59,350 >> Ők Ellenőrizzük, hogy Mindkét kép jó, a 1478 01:09:59,350 --> 01:10:00,450 Amellett, hogy megnyitná azokat. 1479 01:10:00,450 --> 01:10:04,760 Azt írta mindezt kódot most, tehát vagyok nem fog elveszni ezt a kódot. 1480 01:10:04,760 --> 01:10:09,670 Ezután néhány dolog, ami kifejezetten a hogy milyen típusú fájlokat is használ, amely 1481 01:10:09,670 --> 01:10:12,240 a bitmap fájlokat. 1482 01:10:12,240 --> 01:10:15,660 Bitmap kép néhány metaadat velük kapcsolatban. 1483 01:10:15,660 --> 01:10:20,190 >> Tehát az első pár byte mesélni a fájlt. 1484 01:10:20,190 --> 01:10:23,460 Ezek nem a színek a pixel a kép. 1485 01:10:23,460 --> 01:10:25,120 Azt mondják, hogy a fájlt. 1486 01:10:25,120 --> 01:10:28,220 És ha olvassa el a megoldásokat, akkor már sokkal több információt 1487 01:10:28,220 --> 01:10:33,100 hogy milyen típusú metaadat-struktúrák tartalmazza a bitmap. 1488 01:10:33,100 --> 01:10:39,350 >> De ezért van ez az első sor - ez a kód itt. 1489 01:10:39,350 --> 01:10:42,490 Hallunk a metaadatok - 1490 01:10:42,490 --> 01:10:45,800 két darab metaadatok - fájl fejléc és az információ fejléc. 1491 01:10:45,800 --> 01:10:51,030 És mi ellenőrzése egyes részeit, hogy győződjön meg róla, ez egy igazi bitmap fájlt 1492 01:10:51,030 --> 01:10:52,420 A folytatás előtt. 1493 01:10:52,420 --> 01:10:55,470 >> És ismét, ezek a részletek is Nem kell belemenni most. 1494 01:10:55,470 --> 01:10:57,720 Ha elolvasod a probléma meg, meg fogod érteni ezeket. 1495 01:10:57,720 --> 01:11:01,370 Hosszú történet rövid, ezek csak azt mondom, ez egy bitmap fájlt, majd 1496 01:11:01,370 --> 01:11:02,810 megerősítette, hogy. 1497 01:11:02,810 --> 01:11:05,180 >> Ezután írunk azokat Az out fájlt. 1498 01:11:05,180 --> 01:11:05,660 Látjuk, hogy itt van. 1499 01:11:05,660 --> 01:11:06,910 Azért írunk, hogy a kifelé mutató. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Ezután mi meghatározó padding. 1502 01:11:11,320 --> 01:11:15,240 Tehát még egyszer, mint sajátosság a egy bitmap fájlt, bizonyos vonalak közé 1503 01:11:15,240 --> 01:11:16,840 padding a végén. 1504 01:11:16,840 --> 01:11:19,000 És ha olvassa el a megoldásokat, akkor többet megtudni padding. 1505 01:11:19,000 --> 01:11:22,330 Ez a formula találni padding. 1506 01:11:22,330 --> 01:11:23,610 >> Fontos megjegyezni - 1507 01:11:23,610 --> 01:11:29,720 ha megváltoztatja a méretét a bitmap fájl, a kitöltés változik. 1508 01:11:29,720 --> 01:11:31,970 Amikor megváltoztatja a méretét fájl, a kitöltés változik. 1509 01:11:31,970 --> 01:11:34,310 Ez soha nem lesz nagyobb, mint 3 - 1510 01:11:34,310 --> 01:11:36,510 ez lesz a 0 és 3, a befogadó. 1511 01:11:36,510 --> 01:11:38,930 De ha megváltoztatja a méretét valamit, a kitöltés változik. 1512 01:11:38,930 --> 01:11:47,100 >> Ha csak egy pixel ebben a sorban, én kell három bájt padding, mert a 1513 01:11:47,100 --> 01:11:51,190 Minden sorban kell lennie néggyel bájt hosszú egy bitmap fájlt. 1514 01:11:51,190 --> 01:11:56,120 De ha kétszer is, hogy megy egy pixel két pixel, amelyek mindegyike, 1515 01:11:56,120 --> 01:11:59,510 mondjuk, egy bájt, akkor kell két bájt padding, hogy a 1516 01:11:59,510 --> 01:12:00,970 hogy az egyenlő négy. 1517 01:12:00,970 --> 01:12:04,200 >> Tehát, amikor változtatni a méretét valamit, Meg kell változtatni az összeget 1518 01:12:04,200 --> 01:12:06,551 padding én. 1519 01:12:06,551 --> 01:12:08,100 Van ennek értelme mindenkinek? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Következő, végighaladni minden sorban, vagy az összes sort. 1522 01:12:18,720 --> 01:12:21,400 És akkor halad végig minden oszlopban minden sorban. 1523 01:12:21,400 --> 01:12:25,330 Mi kezeljük ezt a bitmap, mint a rács, mint a már kezelt 1524 01:12:25,330 --> 01:12:26,490 A fórumon 15. 1525 01:12:26,490 --> 01:12:29,200 >> Hasonlóan kezeltük a tégla, ha mi nyomtatott őket a képernyőn. 1526 01:12:29,200 --> 01:12:31,350 A rács a sorok és oszlopok. 1527 01:12:31,350 --> 01:12:32,350 Ezután - láttuk ezt. 1528 01:12:32,350 --> 01:12:33,840 Mi valójában csak kódolt ezt. 1529 01:12:33,840 --> 01:12:35,780 Készítettünk néhány ideiglenes tárolására. 1530 01:12:35,780 --> 01:12:38,710 Azt olvassuk ott, majd írunk ki. 1531 01:12:38,710 --> 01:12:42,680 Pontosan ez az, amit csináltál. 1532 01:12:42,680 --> 01:12:46,760 >> Ezután, mert azt mondtam, minden sor végül néhány padding, mi 1533 01:12:46,760 --> 01:12:48,260 átugorják hogy padding - 1534 01:12:48,260 --> 01:12:51,000 A régi padding. 1535 01:12:51,000 --> 01:12:52,630 Aztán hozzá vissza. 1536 01:12:52,630 --> 01:12:55,140 Ebben az esetben mi magunk hozzuk létre pontosan ugyanolyan fájlt. 1537 01:12:55,140 --> 01:12:56,180 Mi csak másolás. 1538 01:12:56,180 --> 01:12:57,700 Tehát ez a sor ilyen ostoba. 1539 01:12:57,700 --> 01:12:59,660 Mi lehetett szó szerint csak tegye a padding be 1540 01:12:59,660 --> 01:13:04,290 >> De ha megváltoztatja a fájl mérete, Még mindig akarod ezt a vonalat? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Tehát, ha megváltoztatjuk a méretét a fájl, Van még ki akarja hagyni 1543 01:13:11,560 --> 01:13:12,810 a régi padding? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENT 74: Igen. 1546 01:13:15,970 --> 01:13:17,090 >> JASON HIRSCHHORN: Így van. 1547 01:13:17,090 --> 01:13:19,290 Mert ez megint, ajánlatok a forrás fájlt. 1548 01:13:19,290 --> 01:13:21,570 Nem érdekel a padding a forrás fájlt. 1549 01:13:21,570 --> 01:13:23,410 Azt akarom, hogy a következő sorra. 1550 01:13:23,410 --> 01:13:28,850 De nem csak tegye vissza a régi összeget padding. 1551 01:13:28,850 --> 01:13:31,540 Meg kell, hogy kerüljön vissza a Új mennyiségű padding. 1552 01:13:31,540 --> 01:13:35,810 >> Tehát amikor mi változik a mérete fájl, még mindig szeretnénk kihagyni a 1553 01:13:35,810 --> 01:13:38,270 padding a régi file - mit mi olvasod felől. 1554 01:13:38,270 --> 01:13:40,370 De amit írsz, hogy megyünk szüksége, hogy kerüljön vissza valami más 1555 01:13:40,370 --> 01:13:41,890 száma padding, hogy ítéltük meg. 1556 01:13:41,890 --> 01:13:42,780 Igen. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75.: Az, hogy a két vonalak nem számít, igaz? 1558 01:13:44,550 --> 01:13:46,160 Mert kezelése különböző fájlokat. 1559 01:13:46,160 --> 01:13:46,620 >> JASON HIRSCHHORN: Pontosan. 1560 01:13:46,620 --> 01:13:48,220 Az, hogy a két vonal nem számít. 1561 01:13:48,220 --> 01:13:49,790 Írunk ezt a sort. 1562 01:13:49,790 --> 01:13:51,430 Ez itt a fájl mi írásban. 1563 01:13:51,430 --> 01:13:54,370 Ez fontos, így megkapjuk a megfelelő mennyiségű padding. 1564 01:13:54,370 --> 01:13:57,560 Ez foglalkozik a fájlban. 1565 01:13:57,560 --> 01:13:58,560 Azt akarjuk, hogy hagyja ki a jobb mint a szivacs. 1566 01:13:58,560 --> 01:13:59,470 >> Nem akarunk olvasni - 1567 01:13:59,470 --> 01:14:01,500 ha olvasod a byte egy időben, nem érdekli azokat a padding bájt. 1568 01:14:01,500 --> 01:14:04,070 Azt akarjuk, hogy lépjen a következő sorra. 1569 01:14:04,070 --> 01:14:11,800 Végül, mint Lucy adta nekünk, zárjuk a fájlokat, és vissza 0-ra. 1570 01:14:11,800 --> 01:14:13,890 Tehát ez copy.c. 1571 01:14:13,890 --> 01:14:17,850 És valójában írtam - mi töltötte részben írom ezt, alapvetően. 1572 01:14:17,850 --> 01:14:18,740 >> Azt tette ezt. 1573 01:14:18,740 --> 01:14:22,440 Így remélhetőleg van egy jó értelemben vett , hogy mi folyik itt. 1574 01:14:22,440 --> 01:14:25,890 A nagy különbség, őszintén, csak ez az első rész, amely foglalkozik 1575 01:14:25,890 --> 01:14:29,970 sajátosságai a bitmap fájlokat. 1576 01:14:29,970 --> 01:14:33,570 Szóval az én következő dia, Mit kell tennünk? 1577 01:14:33,570 --> 01:14:35,510 Nos, gondolj detektívregény. 1578 01:14:35,510 --> 01:14:38,080 >> És valaki, aki olvassa végig A probléma meg, mit is 1579 01:14:38,080 --> 01:14:41,410 kell tennie a detektívregény? 1580 01:14:41,410 --> 01:14:42,080 Egyszerűen. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Tud vegye ki a részét Minden egyes pixel, amely jelzi, piros. 1583 01:14:48,570 --> 01:14:49,730 És akkor - 1584 01:14:49,730 --> 01:14:50,730 fajta? 1585 01:14:50,730 --> 01:14:51,860 >> JASON HIRSCHHORN: OK. 1586 01:14:51,860 --> 01:14:54,460 Így vegye ki a részét az egyes képpont, amely jelöli piros. 1587 01:14:54,460 --> 01:14:57,234 Ez közel van, de nem az egészet. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: Nos, különböző módon lehet csinálni. 1589 01:14:59,780 --> 01:14:59,870 >> JASON HIRSCHHORN: OK. 1590 01:14:59,870 --> 01:15:03,070 Adj egy út. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: Vegye ki az összes piros, és akkor hangsúlyozzák a kék és zöld. 1592 01:15:08,240 --> 01:15:10,010 >> JASON HIRSCHHORN: OK. 1593 01:15:10,010 --> 01:15:11,830 Tehát mivel mindkét módon - 1594 01:15:11,830 --> 01:15:15,210 úgy hangzik, mint mi, hogy ez egy pixel, akkor egy piros, kék, és zöld szint. 1595 01:15:15,210 --> 01:15:19,350 Meg akarja változtatni a relatív szintje a vörös, kék és zöld, attól 1596 01:15:19,350 --> 01:15:20,740 azon a pixel. 1597 01:15:20,740 --> 01:15:28,380 Amennyiben ezt a kódot kellene változtatni a relatív vörös, kék és zöld 1598 01:15:28,380 --> 01:15:29,720 szint egy adott pixel. 1599 01:15:29,720 --> 01:15:30,600 Miután olvastam el - 1600 01:15:30,600 --> 01:15:32,520 mielőtt írni? 1601 01:15:32,520 --> 01:15:34,564 Add nekem a sor számát. 1602 01:15:34,564 --> 01:15:35,950 >> TÖBB DIÁKOK: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON HIRSCHHORN: 83.. 1604 01:15:37,320 --> 01:15:38,570 Tehát itt. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 A detektívregény, a kódot kell write kell minden megy ott. 1607 01:15:45,710 --> 01:15:47,640 És ez az egyetlen kód meg kell írni. 1608 01:15:47,640 --> 01:15:51,520 Mert, mint hallottuk, csak annyit kell tennie, hogy változik a viszonylagos kék, 1609 01:15:51,520 --> 01:15:54,420 piros és a zöld színek szintje minden pixel. 1610 01:15:54,420 --> 01:15:58,250 >> Olvastad azt, és most fogja írni azt. 1611 01:15:58,250 --> 01:16:03,100 Hogyan jutok el -, ha van ez a dolog úgynevezett hármas, itt, és ez a 1612 01:16:03,100 --> 01:16:04,570 típus RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 Nos, ha nézett bmp.h, mi RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: Ez egy struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON HIRSCHHORN: RGBTRIPLE egy struktúra. 1618 01:16:18,900 --> 01:16:22,330 Látjuk, hogy itt lent. 1619 01:16:22,330 --> 01:16:26,600 És így ha akartam elérni, mondjuk, a piros szint a struct, hogyan tudom 1620 01:16:26,600 --> 01:16:30,005 elérheti a vörös szinten ez a struktúra? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS MURMURS] 1622 01:16:37,280 --> 01:16:38,530 >> STUDENT 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON HIRSCHHORN: Ez így van? 1625 01:16:48,856 --> 01:16:53,040 >> DIÁK 79: Meg kell hármas dot, ahelyett, hogy RGBTRIPLE dot? 1626 01:16:53,040 --> 01:16:54,120 >> JASON HIRSCHHORN: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple a helyi változó, így Itt nincs mutató itt. 1628 01:16:56,700 --> 01:16:58,400 Szóval csak használja a pont jelölést. 1629 01:16:58,400 --> 01:17:00,480 Ez ad nekem a szint a vörös. 1630 01:17:00,480 --> 01:17:06,180 Ha meg akarom változtatni, én csak meg ez egyenlő az valami más. 1631 01:17:06,180 --> 01:17:13,190 Tehát még egyszer, ezt a kódsort hozzáférések Ez a változó ezen belül struct, és 1632 01:17:13,190 --> 01:17:15,070 tudjuk meg, hogy valami újat. 1633 01:17:15,070 --> 01:17:20,040 >> Így a detektívregény, megint ez, lényegében, amit meg kell csinálni. 1634 01:17:20,040 --> 01:17:21,170 Nagyon egyszerű. 1635 01:17:21,170 --> 01:17:25,020 Csak a változás néhány relatív szintjét, és ez az, ahol a kód megy. 1636 01:17:25,020 --> 01:17:27,720 Átméretezése, másrészt, egy kicsit trükkösebb. 1637 01:17:27,720 --> 01:17:30,900 Sőt, átméretezés valószínűleg a legnehezebb része ennek a problémának beállítva. 1638 01:17:30,900 --> 01:17:32,720 Van három percünk van rajta. 1639 01:17:32,720 --> 01:17:34,910 >> De ismétlem, mi már írt a legtöbb a kódot, így 1640 01:17:34,910 --> 01:17:36,500 kell nagyon ismerős. 1641 01:17:36,500 --> 01:17:40,750 Milyen dolgokat akarunk csinálni átméretezés, ha már olvassa át a 1642 01:17:40,750 --> 01:17:43,470 probléma meg? 1643 01:17:43,470 --> 01:17:45,290 Ha adsz nekik, hogy én, mi lehet beszélni velük. 1644 01:17:45,290 --> 01:17:47,340 Melyek azok a dolgok, amit akarok? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80: függőlegesen - 1646 01:17:47,970 --> 01:17:52,360 így van, hogy vízszintesen átméretezni, de függőlegesen átméretezni azt is? 1647 01:17:52,360 --> 01:17:58,475 >> JASON HIRSCHHORN: Tehát, ha mi kap egy pixel, és szeretnénk átméretezni azt a 1648 01:17:58,475 --> 01:18:03,460 kétszerese, most kell átméretezett vízszintesen és átméretezett 1649 01:18:03,460 --> 01:18:05,220 függőlegesen. 1650 01:18:05,220 --> 01:18:06,640 Van ennek értelme? 1651 01:18:06,640 --> 01:18:07,060 Igen. 1652 01:18:07,060 --> 01:18:09,300 Szóval ez valószínűleg a legnagyobb kihívás. 1653 01:18:09,300 --> 01:18:10,430 És fogunk beszélni, hogy egy pillanat. 1654 01:18:10,430 --> 01:18:11,065 Igen. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: Én úgy gondoltam, hogy volt szükséged kiírjuk - 1656 01:18:15,270 --> 01:18:15,490 >> JASON HIRSCHHORN: Várjon. 1657 01:18:15,490 --> 01:18:17,580 Ne mondd el, mit tett. 1658 01:18:17,580 --> 01:18:20,620 Fogunk beszélni logika. 1659 01:18:20,620 --> 01:18:21,870 >> STUDENT 81.: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Mi volt a kérdés? 1662 01:18:27,410 --> 01:18:28,892 >> JASON HIRSCHHORN: Csak felemelte a kezét. 1663 01:18:28,892 --> 01:18:31,600 Nem volt kérdés. 1664 01:18:31,600 --> 01:18:32,520 Hadd mutassam be azt. 1665 01:18:32,520 --> 01:18:34,560 Hadd beszéljen röviden. 1666 01:18:34,560 --> 01:18:38,400 Tehát mi egy pixel, szeretnénk megismételni, mind vízszintesen, mind 1667 01:18:38,400 --> 01:18:39,360 függőlegesen. 1668 01:18:39,360 --> 01:18:48,920 Tehát ideális esetben, amit mi itt az, hogy olvasd el a mi pixel, akkor írd 1669 01:18:48,920 --> 01:18:51,690 de sok alkalommal. 1670 01:18:51,690 --> 01:18:54,720 >> De akkor mi van a trükk itt, mert akkor szeretnénk, hogy ugorjon a 1671 01:18:54,720 --> 01:18:57,660 következő sort, és írja meg a elején a következő sorban. 1672 01:18:57,660 --> 01:19:02,960 Tehát ha azt akarjuk lemásolni a két vízszintesen és függőlegesen, mi 1673 01:19:02,960 --> 01:19:05,050 Egy jó módja, hogy - 1674 01:19:05,050 --> 01:19:06,780 Egy jó, bár erre? 1675 01:19:06,780 --> 01:19:11,950 Tehát nem kell állandóan keresni körül fájlt elhelyezni a dolgokat. 1676 01:19:11,950 --> 01:19:14,360 >> Ez a kérdés talán nem értelme, de azt hiszem, egy 1677 01:19:14,360 --> 01:19:15,800 választ, hogy ez segíteni fog. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: Hozzon létre egy tömböt? 1679 01:19:17,210 --> 01:19:20,090 >> JASON HIRSCHHORN: Szóval szerintem Minden fájl a sorban. 1680 01:19:20,090 --> 01:19:22,550 Nézzük gondolkodik a sorok. 1681 01:19:22,550 --> 01:19:26,670 Ha van az első sorban a mi kis kép, tudjuk, hogy adott sor 1682 01:19:26,670 --> 01:19:30,640 egy nagy sort egy nagy kép, majd megismételni, hogy a sor azonban 1683 01:19:30,640 --> 01:19:34,250 sokszor kell megismételni, nem megy pixelenként, 1684 01:19:34,250 --> 01:19:37,260 ami lesz zavaró, ha foglalkozó fájlokat. 1685 01:19:37,260 --> 01:19:38,730 >> Mert ha volt - 1686 01:19:38,730 --> 01:19:41,260 Kezdek kifogyni a hely. 1687 01:19:41,260 --> 01:19:46,490 Ha ez a fájl, és van, hogy egy pixel ott, és azt akarjuk, hogy azt 1688 01:19:46,490 --> 01:19:49,840 ott, még mindig van néhány dolog hogy kell menni oda, mikor vagyunk 1689 01:19:49,840 --> 01:19:51,450 írásban és megteremti az új file - 1690 01:19:51,450 --> 01:19:53,250 a fájl, ez kétszer akkora. 1691 01:19:53,250 --> 01:19:56,820 >> De ez nagyon nehéz a Fájl függvények hogy kihagyja az egész az új vonalak 1692 01:19:56,820 --> 01:20:00,260 így, aztán menj vissza és tegyük a dolgokat ott. 1693 01:20:00,260 --> 01:20:04,500 Ez szinte lehetetlen, hogy tegyen valamit, így, ha van értelme. 1694 01:20:04,500 --> 01:20:10,180 Tehát, ha úgy gondoljuk, tekintve a sorok, tudjuk hogy a sort, majd tedd - 1695 01:20:10,180 --> 01:20:11,720 párhuzamos sorban, függőlegesen. 1696 01:20:11,720 --> 01:20:15,860 >> És ez az, hogy hogyan kezeljük az átméretezés függőlegesen, hanem vízszintesen. 1697 01:20:15,860 --> 01:20:18,810 Ez a fajta gyors és egy kicsit zavaros. 1698 01:20:18,810 --> 01:20:22,375 Sajnos lejárt az időnk. 1699 01:20:22,375 --> 01:20:27,340 Fogok állni kívül azoknak, itt, akiknek kérdése van a 1700 01:20:27,340 --> 01:20:30,500 probléma meg, beleértve a vissza. 1701 01:20:30,500 --> 01:20:32,320 >> Szóval vonuljon most. 1702 01:20:32,320 --> 01:20:34,480 És ismét, ha bármilyen kérdése van, tudunk beszélgetni kívül. 1703 01:20:34,480 --> 01:20:38,294