1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON Hirschhorn: Welcome, všetci, až 6. týždni. 3 00:00:09,840 --> 00:00:14,790 Som rád, že vás všetkých vidieť živý a zdravý po Quiz 0, pretože viem, že 4 00:00:14,790 --> 00:00:15,810 bol trochu hrubý. 5 00:00:15,810 --> 00:00:18,370 Ale našťastie, vy všetci urobil neuveriteľne dobre. 6 00:00:18,370 --> 00:00:21,680 A tak to je úžasné. 7 00:00:21,680 --> 00:00:25,840 Ak ste v mojej časti, som k dispozícii väčšinu z vás späť už svoje kvízy. 8 00:00:25,840 --> 00:00:28,050 >> Pár z vás, mám schôdzku po triede. 9 00:00:28,050 --> 00:00:32,360 A ak ste študent a rozšírenie ste neobdržali kvíz späť 10 00:00:32,360 --> 00:00:35,490 zatiaľ, vaša TF je asi na tom pracuje a triedenie, a dostane ju späť 11 00:00:35,490 --> 00:00:36,490 pre vás v najbližšej dobe. 12 00:00:36,490 --> 00:00:39,650 Takže moja rozšírenie študenti, ktorí sú sledovať práve teraz - dúfajme, že žije - 13 00:00:39,650 --> 00:00:42,880 Budem mať vaše kvízy krátko tiež. 14 00:00:42,880 --> 00:00:45,670 >> Náš program pre dnešok je nasledujúci. 15 00:00:45,670 --> 00:00:50,170 Po prvé, budeme ísť cez niektoré zdroje, ktoré CS50 poskytuje na vás. 16 00:00:50,170 --> 00:00:54,590 Chystáme sa ísť cez Quiz 0 ďalšie, a Budem zodpovie všetky otázky nikoho 17 00:00:54,590 --> 00:00:57,360 má o konkrétnych problémoch. 18 00:00:57,360 --> 00:01:02,050 A potom sme sa ísť cez súbor I / O a problém sada 5. 19 00:01:02,050 --> 00:01:07,360 Tieto posledné dve témy bude trvať hore na veľkom oddielu dnes. 20 00:01:07,360 --> 00:01:11,680 >> Každý týždeň dal som tento zoznam ako pripomienka k vám všetkým, ale jadro 21 00:01:11,680 --> 00:01:14,650 časť, máme len 90 minút - sme nie sú schopní pokryť všetko, čo som 22 00:01:14,650 --> 00:01:16,280 rád by som na pokrytie pre vás. 23 00:01:16,280 --> 00:01:21,170 Ale máme veľa zdrojov pre môžete čerpať ako spoznať 24 00:01:21,170 --> 00:01:24,000 materiál a práce prostredníctvom váš problém nastaví. 25 00:01:24,000 --> 00:01:30,810 >> Pripomína, že mám on-line text box, nastaviť pre vás vyplniť, ak 26 00:01:30,810 --> 00:01:33,250 žiadnu spätnú väzbu pre mňa, ako pozitívne, tak 27 00:01:33,250 --> 00:01:35,180 konštruktívne, o úseku. 28 00:01:35,180 --> 00:01:38,600 Že URL je tu umiestnená vpravo dole. 29 00:01:38,600 --> 00:01:43,250 Takže, prosím, chvíľku, ak máte nejaké spätná väzba, či už v priebehu časti, 30 00:01:43,250 --> 00:01:48,030 alebo po, alebo potom, čo sa budete pozerať na video, on-line, aby mi svoj názor. 31 00:01:48,030 --> 00:01:52,100 Naozaj si toho vážim všetky z neho. 32 00:01:52,100 --> 00:01:55,730 >> Tak som bol s malým konverzácie s množstvom mojich 33 00:01:55,730 --> 00:01:59,350 Študenti po celom týždni - ako som ruku späť kvízy, hovorí o 34 00:01:59,350 --> 00:02:01,480 Samozrejme, keď vidí, ako to robíte. 35 00:02:01,480 --> 00:02:05,120 A jednu tému má prísť znovu a viac ako v roku hovorí o - v 36 00:02:05,120 --> 00:02:05,660 najmä - 37 00:02:05,660 --> 00:02:07,710 Problém sady. 38 00:02:07,710 --> 00:02:13,090 A ja som zapuzdrené túto tému na palube práve teraz. 39 00:02:13,090 --> 00:02:16,630 >> V podstate, tam je rozdiel medzi zapnutím do niečoho, čo je 40 00:02:16,630 --> 00:02:19,590 správne a niečo urobiť , Ktorý je dobre. 41 00:02:19,590 --> 00:02:22,920 Väčšina ľudí robia fantastické , Pokiaľ ide o správnosti - 42 00:02:22,920 --> 00:02:25,460 5 alebo 4 je na všetkých psets. 43 00:02:25,460 --> 00:02:27,930 Väčšina ľudí sa stále sú po celú dobu. 44 00:02:27,930 --> 00:02:31,150 >> Avšak, práve preto, že ste urobili niečo právo neznamená, že ste 45 00:02:31,150 --> 00:02:34,450 urobiť niečo tak elegantne, alebo efektívne, alebo čisto ako vy 46 00:02:34,450 --> 00:02:35,270 mohol urobiť. 47 00:02:35,270 --> 00:02:36,790 A to je to, čo dizajn - 48 00:02:36,790 --> 00:02:39,230 a v menšej miere, štýl - 49 00:02:39,230 --> 00:02:40,450 osi sú. 50 00:02:40,450 --> 00:02:45,130 Tak som vás všetky tlačí, a ďalšie TFS tlačí vás ľudí, aby nielen poradí 51 00:02:45,130 --> 00:02:48,320 vo veciach, ktoré sú v poriadku, ale obracajú vo veciach, ktoré sú kódované dobre. 52 00:02:48,320 --> 00:02:53,060 >> Nerobím zbytočné PRE slučiek, Nie prepočte premenných ak je to 53 00:02:53,060 --> 00:02:53,800 nemusíte sa. 54 00:02:53,800 --> 00:02:58,520 Napríklad, pri pohľade späť do problému nastavenie 4, pri uvádzaní tehly na 55 00:02:58,520 --> 00:03:03,070 obrazovka, každá rada - každá tehla v daný riadok má rovnakú y-ovú súradnicu - 56 00:03:03,070 --> 00:03:04,390 koordinovať rovnakej výške. 57 00:03:04,390 --> 00:03:07,930 >> Tak, že y-ová súradnice nepotreboval sa vypočíta v interiéri 58 00:03:07,930 --> 00:03:11,070 vnorené FOR slučky, ktoré ste pravdepodobne použité aby tie tehly na obrazovke. 59 00:03:11,070 --> 00:03:14,030 Chce to len sa musí vypočítať každý Doba prepnutia riadok, alebo 60 00:03:14,030 --> 00:03:15,200 presťahovala o riadok nadol. 61 00:03:15,200 --> 00:03:19,760 Takže povedať, či existuje 10 tehly v riadok, každá tehla môže mať rovnakú 62 00:03:19,760 --> 00:03:22,260 y-ovú súradnicu, a že y-ová súradnica stačí vypočítať 63 00:03:22,260 --> 00:03:23,550 raz pre všetky z nich. 64 00:03:23,550 --> 00:03:27,810 >> Nie je potrebné, aby sa vypočíta 10 časy, ani sa, že výpočet je potrebné 65 00:03:27,810 --> 00:03:30,220 sa stane v aktuálnej volanie funkcie - 66 00:03:30,220 --> 00:03:33,020 Nová gracked volanie funkcie. 67 00:03:33,020 --> 00:03:37,820 Takže ak to bolo trochu mätúce pre vy, viac všeobecne, veci, ktoré 68 00:03:37,820 --> 00:03:40,730 Nemusíte sa stane zakaždým, prejsť FOR slučky by nemala byť 69 00:03:40,730 --> 00:03:42,900 umiestniť vo vnútri slučky for, a nemali by stane zakaždým, keď idete 70 00:03:42,900 --> 00:03:44,080 cez FOR slučky. 71 00:03:44,080 --> 00:03:49,270 >> Ďalší dobrý dizajn príklad sme videli v týždni 3 pre 15, môžete udržať 72 00:03:49,270 --> 00:03:50,500 dráha z nuly. 73 00:03:50,500 --> 00:03:53,600 Takže pri inicializácii dosky, vás uložiť - v globálne premenné, snáď - 74 00:03:53,600 --> 00:03:56,140 x a y-súradnicu nula. 75 00:03:56,140 --> 00:03:57,520 A potom kedykoľvek - 76 00:03:57,520 --> 00:04:00,310 v pohybe funkciu, keď urobíte úspešný krok, aktualizovať 77 00:04:00,310 --> 00:04:02,040 Umiestnenie nuly. 78 00:04:02,040 --> 00:04:06,240 >> To by ťa zachránil od nutnosti vykonať vnorené FOR slučky prezrieť 79 00:04:06,240 --> 00:04:10,700 nastúpiť zakaždým v pohybe funkciu a nájsť nulu, alebo nájdite dlaždicu, 80 00:04:10,700 --> 00:04:12,460 a potom skontrolovať, čo je vedľa nej. 81 00:04:12,460 --> 00:04:16,329 Namiesto toho, máte umiestnenie nula, stačí sa pozrieť hore, dole, 82 00:04:16,329 --> 00:04:21,160 a naľavo a napravo od neho, že si dlaždice ste hľadali. 83 00:04:21,160 --> 00:04:24,970 >> Takže pokiaľ ide o programoch sme písanie, oni sú nikdy dosť veľký 84 00:04:24,970 --> 00:04:28,580 že niektoré z týchto rozhodnutí dizajnu sú naozaj bude brániť vaše 85 00:04:28,580 --> 00:04:31,670 programu, alebo aby to bežať pomalšie, alebo snáď dokonca k vyčerpaniu pamäte. 86 00:04:31,670 --> 00:04:35,030 Ale my sme stále tlačí vás chlapci písať ako elegantný a 87 00:04:35,030 --> 00:04:36,450 efektívna kód, ako je to možné. 88 00:04:36,450 --> 00:04:39,910 >> Takže ak nechcete skončiť písať veci , Ktoré majú podstatne väčšiu 89 00:04:39,910 --> 00:04:44,660 rozsah, budú písané s dobrým navrhnúť okrem toho, že správny. 90 00:04:44,660 --> 00:04:46,300 Takže číslo máte priniesol, že von. 91 00:04:46,300 --> 00:04:48,560 To je niečo, čo sme hľadali - niečo, čo budeme aj naďalej 92 00:04:48,560 --> 00:04:49,840 tlačiť vás chlapci na. 93 00:04:49,840 --> 00:04:52,460 >> Ak budete mať nejaké otázky týkajúce sa návrh programu, neváhajte 94 00:04:52,460 --> 00:04:56,870 osloviť ma, a ja som rád, že prechádzať programu s vami, 95 00:04:56,870 --> 00:05:01,320 a poukázať na niektoré z dizajnu rozhodnutie, ktoré ste vykonali, a dať vám niektoré 96 00:05:01,320 --> 00:05:06,240 návrhy, ako urobiť ešte lepšie rozhodnutia designu. 97 00:05:06,240 --> 00:05:08,870 >> Takže ideme ďalej hovoriť o Quiz 0. 98 00:05:08,870 --> 00:05:11,300 Ako to urobíme, nemá niekto máte nejaké otázky o tom, čo 99 00:05:11,300 --> 00:05:14,252 Zakryl som tak ďaleko? 100 00:05:14,252 --> 00:05:21,500 >> [Šušťanie NOISE] 101 00:05:21,500 --> 00:05:22,750 >> JASON Hirschhorn: Sedem sekúnd. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Poďme sa baviť o Quiz 0 na chvíľu. 104 00:05:24,970 --> 00:05:26,700 Väčšina z vás má svoju kvíz 0 je späť. 105 00:05:26,700 --> 00:05:29,820 Ak nie, snáď Pamätáte si to trochu. 106 00:05:29,820 --> 00:05:34,770 Ale ak ste si vzal kvíz 0, potom majú tiež prístup k PDF on-line v 107 00:05:34,770 --> 00:05:35,890 vzorové riešenia. 108 00:05:35,890 --> 00:05:39,480 >> Má niekto nejaké otázky pred skočíme do materiálu na týždeň o 109 00:05:39,480 --> 00:05:41,520 osobitný problém na kvíz 0 - 110 00:05:41,520 --> 00:05:44,630 prečo odpoveď je to, čo to je? 111 00:05:44,630 --> 00:05:47,255 Je niekto zmätený o niečom? 112 00:05:47,255 --> 00:05:50,230 Dokonca aj keď máte problém pravdu, ale Len by som rád, aby som to vysvetlil trochu 113 00:05:50,230 --> 00:05:52,640 viac, som rád, že tak urobiť teraz. 114 00:05:52,640 --> 00:05:57,800 >> Tak som sa opýtal vás chlapci prísť pripravení s niektorými 115 00:05:57,800 --> 00:05:59,440 myšlienky o Quiz 0. 116 00:05:59,440 --> 00:06:02,660 Takže kto by chcel, aby nám dostať začal s otázkou alebo 117 00:06:02,660 --> 00:06:04,655 komentár o Quiz 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [PAPER šušťanie] 120 00:06:10,410 --> 00:06:11,470 >> JASON Hirschhorn: Nie každý urobil perfektne. 121 00:06:11,470 --> 00:06:12,720 Takže viem [smiech] 122 00:06:12,720 --> 00:06:15,950 tam musí byť niektoré otázky o Quiz 0. 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 Áno. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: číslo 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON Hirschhorn: číslo 10. 129 00:06:33,560 --> 00:06:35,400 Ktorý z nich bolo číslo 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: - 131 00:06:35,840 --> 00:06:36,420 >> JASON Hirschhorn: haven't I - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: patrí - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON Hirschhorn: Číslo 10 bolo osem I - písanie osem na Aj? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Jo. 136 00:06:42,980 --> 00:06:43,630 >> JASON Hirschhorn: OK. 137 00:06:43,630 --> 00:06:47,390 Takže ďalšia otázka, ktorú môže mať spýtal sa mám predvídavý? 138 00:06:47,390 --> 00:06:48,630 Odpoveď je áno. 139 00:06:48,630 --> 00:06:52,060 V úseku pred kvíze, spýtal som sa vy na zakódovanie ako Sterling a 140 00:06:52,060 --> 00:06:52,980 osem až i 141 00:06:52,980 --> 00:06:54,770 Obaja z nich sa stalo sa objaví na kvíz. 142 00:06:54,770 --> 00:06:57,510 Takže dúfajme, že ste zaplatili pozornosť na to. 143 00:06:57,510 --> 00:07:02,520 >> A ak ste mali, potom by ste mali mať pravdepodobne dobre na tie dva. 144 00:07:02,520 --> 00:07:06,030 Ale osem až i, my sme vlastne kód je v triede, ale bolo to opäť, 145 00:07:06,030 --> 00:07:07,500 spýtal sa na kvíz. 146 00:07:07,500 --> 00:07:13,270 Takže pár vecí, ktoré berú vedomia pri kódovaní osem až i 147 00:07:13,270 --> 00:07:17,320 Prvá vec, na otázku, bolo že ste potrebovali zistiť, či reťazec 148 00:07:17,320 --> 00:07:20,300 bol rovný null. 149 00:07:20,300 --> 00:07:28,060 >> A pár ľudí sa snažila overiť neskôr v programe, ak je konzola som bol - 150 00:07:28,060 --> 00:07:30,940 tak špecifický charakter v tom, že string - bol rovný null. 151 00:07:30,940 --> 00:07:35,600 Ale pamätajte si, že null je v podstate - to je dobré myslieť na 152 00:07:35,600 --> 00:07:39,100 null ako nulový ukazovateľ - ukazovateľ na nulu - 153 00:07:39,100 --> 00:07:40,920 niekde v pamäti, kde môžete nikdy prístup. 154 00:07:40,920 --> 00:07:44,730 >> Takže ak je niečo rovná null, môžete viem, že to nebola inicializovaná, 155 00:07:44,730 --> 00:07:46,430 alebo tam nič nie je. 156 00:07:46,430 --> 00:07:50,950 Tak to je char hviezda, S, s držiak aj je char. 157 00:07:50,950 --> 00:07:57,410 Tak to dáva zmysel porovnávať s na hodnotu null, ale nie s držiak aj na hodnotu null. 158 00:07:57,410 --> 00:07:59,390 Ale opäť - tak, aby bola prvá vec, že ste mali urobiť - 159 00:07:59,390 --> 00:08:03,510 skontrolujte, či ste skutočne má skutočný reťazec. 160 00:08:03,510 --> 00:08:08,020 >> Ďalej, čo ste chceli prejsť Každý znak v reťazci. 161 00:08:08,020 --> 00:08:12,500 A tak by to bolo ako s držiakom i, napríklad, ak je aj vaša iterátor. 162 00:08:12,500 --> 00:08:17,250 A vziať tú postavu, a získať jeho skutočnú hodnotu. 163 00:08:17,250 --> 00:08:21,800 Môžete si ho uloží ako char, ale ASCII hodnota pre nulu - 164 00:08:21,800 --> 00:08:23,010 nula ako znak - 165 00:08:23,010 --> 00:08:25,450 v skutočnosti nie je celé číslo nula. 166 00:08:25,450 --> 00:08:28,700 Je to iné číslo, ktoré môžete vyhľadať v tabuľke ASCII. 167 00:08:28,700 --> 00:08:30,790 >> Takže jeden spôsob, ako korekciu, že - Asi najlepší spôsob, ako opraviť za 168 00:08:30,790 --> 00:08:33,760 že - je odpočítať od nej hodnota znaku - 169 00:08:33,760 --> 00:08:35,140 nulu ako znak. 170 00:08:35,140 --> 00:08:38,490 Takže mínus jeden citát, nula, ďalší singel citát. 171 00:08:38,490 --> 00:08:44,620 To bude trvať bez ohľadu na číslo, ktoré máte ako char, a dostať je rovná 172 00:08:44,620 --> 00:08:46,720 číslo ako skutočné číslo. 173 00:08:46,720 --> 00:08:50,300 >> A to je veľmi podobný prístupu Mnoho ľudí sa v 174 00:08:50,300 --> 00:08:52,800 Problém sada 2, s Caesarom a Viginere - 175 00:08:52,800 --> 00:08:55,160 tieto šifry, ak boli otáčania je. 176 00:08:55,160 --> 00:08:59,210 Takže potom, čo ste ho ako číslo od nula až deväť, a potom - v závislosti na 177 00:08:59,210 --> 00:09:02,750 kde to ide v konečné číslo - treba ju vynásobiť 178 00:09:02,750 --> 00:09:04,120 o sile 10. 179 00:09:04,120 --> 00:09:07,340 >> Niektorí ľudia sa sťahoval zo zadnej do predné a násobí jednotlivca 180 00:09:07,340 --> 00:09:08,940 číslo o sile 10. 181 00:09:08,940 --> 00:09:11,160 Niektorí ľudia sa sťahoval z spredu dozadu - 182 00:09:11,160 --> 00:09:14,430 a tak sa najvyššie poradových čísel prvý - 183 00:09:14,430 --> 00:09:18,190 a zachráni tých, globálna premenná counter. 184 00:09:18,190 --> 00:09:20,880 A potom zakaždým cez FOR slučky, násobiť, že obrie globálne 185 00:09:20,880 --> 00:09:25,640 proti premennú 10, aby priestor pre ďalšie char. 186 00:09:25,640 --> 00:09:28,750 >> Takže to bolo trochu mätúce, bez toho, aby mi to písať na tabuľu. 187 00:09:28,750 --> 00:09:31,550 Ale roztok vzorky je Vám k dispozícii. 188 00:09:31,550 --> 00:09:32,870 Ale to boli veľké veci sme hľadali. 189 00:09:32,870 --> 00:09:36,400 Tiež skontrolujte, uistite sa, že každý individuálny charakter bol skutočne 190 00:09:36,400 --> 00:09:39,780 charakter od nuly do deväť, a nie niektoré ďalší znak, ako A, 191 00:09:39,780 --> 00:09:41,160 napríklad. 192 00:09:41,160 --> 00:09:43,150 >> To boli veci, ktoré sme hľadali v tejto otázke. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Znamená to, že odpoveď na vašu otázku? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Jo. 196 00:09:49,320 --> 00:09:50,240 >> JASON Hirschhorn: OK. 197 00:09:50,240 --> 00:09:53,940 Existujú nejaké ďalšie otázky o Quiz 0? 198 00:09:53,940 --> 00:09:55,440 Čo kompiláciu? 199 00:09:55,440 --> 00:09:56,740 Všetci zostavovanie pravdu? 200 00:09:56,740 --> 00:09:58,370 Nie. 201 00:09:58,370 --> 00:09:58,840 Tam bolo - 202 00:09:58,840 --> 00:10:01,010 [Smiech] 203 00:10:01,010 --> 00:10:03,265 Akékoľvek otázky týkajúce sa kompilácie proces? 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 >> [PAPER šušťanie] 207 00:10:11,090 --> 00:10:11,520 >> JASON Hirschhorn: Áno. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: Je číslo 7 - náhodné? 210 00:10:14,140 --> 00:10:16,500 >> JASON Hirschhorn: číslo 7. 211 00:10:16,500 --> 00:10:20,670 Číslo 7 je získať náhodné celé číslo. 212 00:10:20,670 --> 00:10:21,110 Výborný. 213 00:10:21,110 --> 00:10:25,630 Takže ste dostali integer a číslo b, a chcete náhodné 214 00:10:25,630 --> 00:10:28,710 celé číslo medzi a, b 215 00:10:28,710 --> 00:10:31,740 Môžeme vlastne napísať tento jeden na doska, pretože toto 216 00:10:31,740 --> 00:10:33,320 Bol jeden riadok kódu - 217 00:10:33,320 --> 00:10:34,390 jeden spôsob, ako to urobiť. 218 00:10:34,390 --> 00:10:37,810 >> Takže sme vzhľadom k drandí ako funkcie môžeme použiť. 219 00:10:37,810 --> 00:10:38,820 A čo drandí - 220 00:10:38,820 --> 00:10:40,290 za predpokladu, že to bol nasadený - 221 00:10:40,290 --> 00:10:42,316 čo drandí vrátiť? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: float medzi 0,0 a 1,0. 223 00:10:44,840 --> 00:10:45,530 >> JASON Hirschhorn: číslo - jo. 224 00:10:45,530 --> 00:10:47,910 Číslo medzi 0 a 1.. 225 00:10:47,910 --> 00:10:51,760 A tak sme b a 226 00:10:51,760 --> 00:10:55,480 A potom máme náhodné číslo medzi 0 a 1 ktorý nám bol daný drandí. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Niektorí ľudia sa snažili dať b, alebo b mínus , Alebo niečo v tých 229 00:11:06,630 --> 00:11:07,960 zátvorky. 230 00:11:07,960 --> 00:11:11,210 To by znamenalo, že sú argumenty k tejto funkcii. 231 00:11:11,210 --> 00:11:13,450 >> drandí neberie žiadne argumenty - ako getString robí 232 00:11:13,450 --> 00:11:14,330 Neužívajte žiadne argumenty. 233 00:11:14,330 --> 00:11:16,600 Takže je to len otvorené zátvorka, v blízkosti paren - a to, že samo o sebe, je 234 00:11:16,600 --> 00:11:17,330 volanie funkcie. 235 00:11:17,330 --> 00:11:19,770 A to vám dáva číslo medzi 0 a 1.. 236 00:11:19,770 --> 00:11:22,820 Samozrejme, že máme celý rad že čísla môžu byť palcov 237 00:11:22,820 --> 00:11:28,470 >> Povedzme, že ak b je 10, a je 5, naozaj Ak číslo s radom 5. 238 00:11:28,470 --> 00:11:36,940 Takže ďalšia vec, ktorú musíme urobiť, je vynásobte to o rozsahu b mínus. 239 00:11:36,940 --> 00:11:40,380 Takže za predpokladu, že sa násobí. 240 00:11:40,380 --> 00:11:42,590 A že budeme mať celý rad v danom rozsahu. 241 00:11:42,590 --> 00:11:46,610 A že konkrétny rozsah je Rozdiel medzi B mínus. 242 00:11:46,610 --> 00:11:50,030 >> A konečne, že ho dám len od - hovoria, že rozsah medzi b mínus 243 00:11:50,030 --> 00:11:52,520 je 5, že dám nám číslo od 0 do 5. 244 00:11:52,520 --> 00:11:56,000 Avšak v prípade, že je v skutočnosti 5, je potrebné zvýšiť tento rozsah až tam, kde je to 245 00:11:56,000 --> 00:12:01,380 vlastne má byť, tým, že pridá. 246 00:12:01,380 --> 00:12:02,580 Tak, že dostane logický právo. 247 00:12:02,580 --> 00:12:03,745 A potom, mali by ste mať ďalšia otázka? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: Nie 249 00:12:04,547 --> 00:12:06,010 Cítim sa teraz naozaj hlúpy. 250 00:12:06,010 --> 00:12:06,405 [Smiech] 251 00:12:06,405 --> 00:12:06,730 >> JASON Hirschhorn: Nie 252 00:12:06,730 --> 00:12:08,640 Nemajte pocit, že naozaj hlúpy. 253 00:12:08,640 --> 00:12:10,560 Počet ľudí, ktorí bojovali s touto otázkou. 254 00:12:10,560 --> 00:12:13,920 A potom, ďalšou otázkou je, drandí, ste povedal, vám dáva plavák - 255 00:12:13,920 --> 00:12:14,940 vráti plavák. 256 00:12:14,940 --> 00:12:18,020 Ale táto funkcia skutočne požiadal na číslo, ktoré majú byť vrátené. 257 00:12:18,020 --> 00:12:23,700 >> Nemusíte obsadiť toto výslovne na celé číslo, pretože tieto 258 00:12:23,700 --> 00:12:29,090 Operácia bude zaobchádzať ako všetko float - ako číslo s plávajúcou čiarkou. 259 00:12:29,090 --> 00:12:31,570 Rovnako ako tento vôľu - aj keď to je celé číslo, bude 260 00:12:31,570 --> 00:12:32,890 sa násobí správne. 261 00:12:32,890 --> 00:12:34,000 Všetky násobenie bude fungovať. 262 00:12:34,000 --> 00:12:35,060 Nemusíte ju obsadil tu. 263 00:12:35,060 --> 00:12:36,480 V skutočnosti, nemali by ste ho obsadil. 264 00:12:36,480 --> 00:12:37,310 >> To by - 265 00:12:37,310 --> 00:12:40,750 ak by totiž vrhol číslo že je medzi 0 a 1 - 266 00:12:40,750 --> 00:12:42,680 náhodné číslo, plávajúcou desatinnou čiarkou - 267 00:12:42,680 --> 00:12:47,850 potom to bude buď iba 0 alebo 1, tak stratíte všetky uvedené presnosti. 268 00:12:47,850 --> 00:12:50,120 Ale na konci, keď sa vrátite, automaticky sa dostane 269 00:12:50,120 --> 00:12:51,620 poslal staré ako celé číslo. 270 00:12:51,620 --> 00:12:56,870 Takže nemusíte robiť že obsadenie sami. 271 00:12:56,870 --> 00:13:00,810 >> Tak toto bola odpoveď na že otázka, číslo 7. 272 00:13:00,810 --> 00:13:02,190 Akékoľvek ďalšie otázky týkajúce sa Quiz 0? 273 00:13:02,190 --> 00:13:03,300 Jo, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: Keď budeme používať rekurzívny - 275 00:13:05,050 --> 00:13:07,850 kedy používame iteračné slučky? 276 00:13:07,850 --> 00:13:10,210 >> JASON Hirschhorn: Ak používate rekurzívne - tak všeobecnejšie, 277 00:13:10,210 --> 00:13:14,110 klady a zápory rekurzia proti iteratívny prístup. 278 00:13:14,110 --> 00:13:17,110 Môže niekto ponúknuť Pro alebo kon? 279 00:13:17,110 --> 00:13:19,460 Prosím? 280 00:13:19,460 --> 00:13:20,140 Nemožno nikoho. 281 00:13:20,140 --> 00:13:22,526 Kto môže ponúknuť Pro alebo kon? 282 00:13:22,526 --> 00:13:26,963 >> [PAPER šušťanie] 283 00:13:26,963 --> 00:13:29,730 >> STUDENT 1: Rekurzívny je menej kódovanie - menej písať? 284 00:13:29,730 --> 00:13:33,170 >> JASON Hirschhorn: Takže všeobecne, rekurzia najmä funkcie - 285 00:13:33,170 --> 00:13:35,750 alebo algoritmus ako zlúčenie druh -, ktoré sa hodia 286 00:13:35,750 --> 00:13:37,300 na rekurzívne prístup - 287 00:13:37,300 --> 00:13:40,710 môže byť priamejšie na kód rekurzívne. 288 00:13:40,710 --> 00:13:43,940 A práve väčší zmysel na to rekurzívne. 289 00:13:43,940 --> 00:13:46,230 Tak to by bolo pre rekurziu. 290 00:13:46,230 --> 00:13:46,610 Ostatné? 291 00:13:46,610 --> 00:13:47,467 Jo? 292 00:13:47,467 --> 00:13:49,240 >> Študent 2: Con rekurziu - 293 00:13:49,240 --> 00:13:50,940 To používa viac pamäte. 294 00:13:50,940 --> 00:13:52,200 >> JASON Hirschhorn: Tak presne to pravé. 295 00:13:52,200 --> 00:13:55,720 Rekurzívne funkcie bude držať pridanie zásobník rámy na zásobníku. 296 00:13:55,720 --> 00:13:59,690 Takže ak ste pracujúci na mnohých čísla, a musí sa volať to 297 00:13:59,690 --> 00:14:02,560 fungovať veľa, potom ste iste zaberajú viac pamäte, zatiaľ čo 298 00:14:02,560 --> 00:14:05,810 iteratívny prístup iba dať jednu stack frame na zásobníku, pretože 299 00:14:05,810 --> 00:14:08,420 to všetko sa deje v rámci jednej funkcie. 300 00:14:08,420 --> 00:14:11,010 >> Akékoľvek iné výhody a nevýhody? 301 00:14:11,010 --> 00:14:11,500 Jo. 302 00:14:11,500 --> 00:14:12,550 >> STUDENT 3: Pros na rekurzia. 303 00:14:12,550 --> 00:14:15,950 Nemusíte určiť, dopredu koľkokrát 304 00:14:15,950 --> 00:14:17,660 kód musela opakovať. 305 00:14:17,660 --> 00:14:22,810 Tie môžu mať vopred stanovený počet časy, ktoré máte k iterácii, potom 306 00:14:22,810 --> 00:14:26,420 rekurzia je lepšia, pretože to znamená, že výsledok. 307 00:14:26,420 --> 00:14:27,780 >> JASON Hirschhorn: Myslím, že je to pravda. 308 00:14:27,780 --> 00:14:30,770 Ale myslím, že v oboch prípadoch by ste nikdy - 309 00:14:30,770 --> 00:14:33,290 by ste pravdepodobne získať niektoré vstup od užívateľa. 310 00:14:33,290 --> 00:14:35,990 Alebo táto funkcia bude mať nejaký vstup že by sa zistiť, koľkokrát je 311 00:14:35,990 --> 00:14:36,730 by mal bežať. 312 00:14:36,730 --> 00:14:39,520 Takže všeobecne, by si ani tvrdú kódu - dokonca v iteratívny prístup - ako 313 00:14:39,520 --> 00:14:40,940 mnohokrát, že slučka by mal byť spustený. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Vedeli ste, že si iný premýšľať o tom, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Takže to sú asi dva - 318 00:14:51,650 --> 00:14:54,370 najväčšie pre a najväčšie kon na rekurzívne proti 319 00:14:54,370 --> 00:14:57,080 iteratívny prístup. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Na Quiz 0 Ešte niečo? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Poďme ďalej. 324 00:15:09,920 --> 00:15:15,260 File Aj / O. Tam je nádherný krátky Tento týždeň na súbor I / O, ktoré snáď 325 00:15:15,260 --> 00:15:19,270 ste sledovali násobok krát, a obdivoval. 326 00:15:19,270 --> 00:15:22,910 Veľa práce išla do toho, a ja som počul, že to je šialene užitočné. 327 00:15:22,910 --> 00:15:25,740 Ja tiež odkaz na túto snímku, V prípade, že ste nemal 328 00:15:25,740 --> 00:15:29,160 možnosť sledovať to 10 krát. 329 00:15:29,160 --> 00:15:35,280 >> Takže sa budeme stručne prebrať významné kroky na otvorenie a prácu 330 00:15:35,280 --> 00:15:38,400 sa súbory, a potom budeme ponoriť sa do problému kódovania pred 331 00:15:38,400 --> 00:15:40,400 skúmanie problému sadu. 332 00:15:40,400 --> 00:15:44,330 Takže znova, idem dať to hore na obrazovke, ale ja budem hovoriť za 333 00:15:44,330 --> 00:15:47,630 len minútu na to, čo sme tu sa súborom I/O-- 334 00:15:47,630 --> 00:15:49,090 Čo to znamená? 335 00:15:49,090 --> 00:15:55,280 >> To znamená, že môžeme vytvárať naše programy, a potom sa naše programy 336 00:15:55,280 --> 00:16:00,370 exit, a nie robili žiadny vplyv na svet mimo nášho programu. 337 00:16:00,370 --> 00:16:04,630 Ale keď sme začali pracovať so súbormi - ako ich čítať v a vytváranie 338 00:16:04,630 --> 00:16:10,460 je - môžeme mať nejaký vplyv na svet mimo nášho programu. 339 00:16:10,460 --> 00:16:15,440 >> Rovnako ako v prípade Microsoft Word nebol schopný aby všetky dokumenty programu Word, kliknite na 340 00:16:15,440 --> 00:16:18,710 Raz Microsoft Word prestať, všetky svoje Práca bude preč, a to by 341 00:16:18,710 --> 00:16:19,740 naozaj k ničomu. 342 00:16:19,740 --> 00:16:23,620 My nakoniec chceme, aby bolo možné písať programy, ktoré môžu mať vplyv na 343 00:16:23,620 --> 00:16:31,350 svet okolo nich, a to ako tým, že v komplexné vstupy - z hľadiska súborov a 344 00:16:31,350 --> 00:16:37,080 pomocou súborov, a tiež vytvára zaujímavé a presvedčivé výstupy - 345 00:16:37,080 --> 00:16:39,520 , Pokiaľ ide o rôzne typy súborov. 346 00:16:39,520 --> 00:16:43,730 >> Takže to je dôvod, prečo sme sa začína naučiť sa pracovať so súbormi. 347 00:16:43,730 --> 00:16:47,080 Konkrétnejšie, čo čo robíme, je takto. 348 00:16:47,080 --> 00:16:47,680 Je to veľmi jednoduché. 349 00:16:47,680 --> 00:16:51,530 Existuje len pár krokov, a sú tu uvedené o tomto kódexe. 350 00:16:51,530 --> 00:16:55,130 Takže ideme prejsť Tento kód riadok po riadku. 351 00:16:55,130 --> 00:16:57,630 >> Po prvé, môžete vidieť zdôraznil - 352 00:16:57,630 --> 00:17:01,330 keď pracujete so súborom, bez ohľadu na typ súboru je to, 353 00:17:01,330 --> 00:17:02,670 musíte ju otvoriť. 354 00:17:02,670 --> 00:17:05,130 A to je s výzvou na fopen - 355 00:17:05,130 --> 00:17:05,950 tu. 356 00:17:05,950 --> 00:17:07,980 Tie zahŕňajú názov súboru. 357 00:17:07,980 --> 00:17:11,930 Ak súbor nie je v adresári, alebo priečinok, kde tento program 358 00:17:11,930 --> 00:17:15,910 život, potom je tiež nutné zahrnúť Cesta na miesto, kde tento súbor je. 359 00:17:15,910 --> 00:17:19,099 >> Budeme predpokladať, že tento súbor s názvom "text.txt" - 360 00:17:19,099 --> 00:17:24,220 jednoduchý textový dokument - je rovnakej zložke ako tohto programu je. 361 00:17:24,220 --> 00:17:26,859 Takže to je ďalšia vec, ktorú by ste mali mať na myseľ - že ak chcete otvoriť súbor 362 00:17:26,859 --> 00:17:30,050 niekde inde, čo skutočne potrebujete aby zahŕňala jeho umiestnenie. 363 00:17:30,050 --> 00:17:33,520 >> Po druhé, môžete odovzdať argument fopen, a to je to, čo chcete robiť, 364 00:17:33,520 --> 00:17:34,620 so súborom. 365 00:17:34,620 --> 00:17:38,450 Existujú tri hlavné argumenty, že budete odovzdať fopen. 366 00:17:38,450 --> 00:17:40,060 Kto mi môže dať tie tri? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Kto mi môže dať jeden z nich? 369 00:17:47,130 --> 00:17:48,130 Áno. 370 00:17:48,130 --> 00:17:50,010 >> STUDENT 4: názov súboru? 371 00:17:50,010 --> 00:17:50,440 >> JASON Hirschhorn: Ospravedlňujem sa. 372 00:17:50,440 --> 00:17:55,490 Tri hlavné argumenty môžete prejdú ako druhý argument fopen. 373 00:17:55,490 --> 00:17:57,060 Máš pravdu - názov súboru je prvý argument. 374 00:17:57,060 --> 00:18:01,620 Ale druhý argument fopen sú všeobecne tri reťazca, a - áno. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: pre append. 377 00:18:03,490 --> 00:18:06,840 >> JASON Hirschhorn:, ak chcete pridať do súboru, ktorý už existuje. 378 00:18:06,840 --> 00:18:07,810 >> STUDENT 5: R pre čítanie. 379 00:18:07,810 --> 00:18:09,930 >> JASON Hirschhorn: R, ak chcete čítať zo súboru. 380 00:18:09,930 --> 00:18:10,670 >> STUDENT 6: W pre zápis. 381 00:18:10,670 --> 00:18:12,840 >> JASON Hirschhorn: A w, ak sa chcete napísať do súboru. 382 00:18:12,840 --> 00:18:17,570 Takže v tomto prípade budeme písať do súboru, takže máme w. 383 00:18:17,570 --> 00:18:22,360 Otvorte ho, musíte tiež uložiť súbor niekde, a to s 384 00:18:22,360 --> 00:18:26,000 Kód na ľavej strane Operátor priradenia - 385 00:18:26,000 --> 00:18:31,220 Ja som vytvoriť ukazovateľ do súboru volal, v tomto prípade, súbor. 386 00:18:31,220 --> 00:18:36,070 >> Nebudeme sa báť toho, čo to všetky čiapky FILE to je. 387 00:18:36,070 --> 00:18:40,600 Postačí, keď poviem, že je to dlhý prúd núl a jednotiek. 388 00:18:40,600 --> 00:18:44,970 A to je to, ako sa budeme pracovať a pochopiť ju. 389 00:18:44,970 --> 00:18:47,300 >> Ďalšia vec, ktorú musíme urobiť - a To je nesmierne dôležité - 390 00:18:47,300 --> 00:18:49,070 pri každom otvorení súboru - 391 00:18:49,070 --> 00:18:54,250 V skutočnosti, keď budete volať malloc, pre príklad, a trochu pamäti a skúste 392 00:18:54,250 --> 00:18:57,980 a uložte ho na ukazovateľ, vždy chcete skontrolovať, aby sa ubezpečil, že 393 00:18:57,980 --> 00:19:00,230 funkcie nevrátil null. 394 00:19:00,230 --> 00:19:05,230 >> Takže v tomto prípade, sme kontrolu, aby sa Uistite sa, že sme vlastne otvorili 395 00:19:05,230 --> 00:19:10,230 súbor správne, a tam bol v našom programe žiadna chyba. 396 00:19:10,230 --> 00:19:15,160 Ďalej, akonáhle sme sa kontrolovať, aby sa ubezpečil, že máme pracovný súbor, môžeme 397 00:19:15,160 --> 00:19:18,520 písať, alebo čítať z, alebo pripojiť k súboru. 398 00:19:18,520 --> 00:19:24,270 V tomto prípade, som jednoducho tlače jeden riadok do tohto súboru. 399 00:19:24,270 --> 00:19:25,450 >> Ako mám vedieť, že? 400 00:19:25,450 --> 00:19:27,990 No, ja som s použitím tejto funkcie volal fprintf. 401 00:19:27,990 --> 00:19:30,970 Všetky funkcie, ktoré budete používať pri písaní, alebo čítanie, alebo 402 00:19:30,970 --> 00:19:34,950 práca so súbormi bude podobný funkcie, ktoré ste nevideli, ale 403 00:19:34,950 --> 00:19:38,420 začínajú písmenom F, stojí na súbore. 404 00:19:38,420 --> 00:19:43,440 A fprintf, na rozdiel od nášho bežného tlače app, trvá jeden ďalší argument, 405 00:19:43,440 --> 00:19:47,800 a to je súbor, v ktorom ste ktorý chcete vytlačiť tento riadok. 406 00:19:47,800 --> 00:19:50,640 >> Nemám nič právo Ohai. 407 00:19:50,640 --> 00:19:52,860 Nemám na tretinu argument printf - 408 00:19:52,860 --> 00:19:57,030 alebo druhý argument printf, Tretí argument fprintf, pretože som 409 00:19:57,030 --> 00:19:59,480 nemajú žiadne zástupné symboly tu. 410 00:19:59,480 --> 00:20:01,070 Nejsem vrátane všetkých premenných. 411 00:20:01,070 --> 00:20:06,070 Ale opäť, fprintf a všetky z týchto súborov funkcie, ktoré pracujú so súbormi 412 00:20:06,070 --> 00:20:09,820 sú zvyčajne bude potrebovať súbor na ktorom sú v prevádzke. 413 00:20:09,820 --> 00:20:15,960 >> A konečne posledná dôležitá vec urobiť, je zavrieť súbor, rovnako ako 414 00:20:15,960 --> 00:20:19,530 s - keď sme malloc niečo, chceme oslobodiť niečo, lesť my 415 00:20:19,530 --> 00:20:22,730 majú pretečeniu pamäte - chceme zavrieť našu súbor. 416 00:20:22,730 --> 00:20:28,180 Ak tento program vystúpil bez zapínania súbor, je pravdepodobné, nič by ísť 417 00:20:28,180 --> 00:20:30,050 zle, najmä ak sa Bol malý súbor. 418 00:20:30,050 --> 00:20:35,020 >> Ale je to určite dobrá kódovanie štýl a praxe vždy zavrite súbor 419 00:20:35,020 --> 00:20:38,050 Až budete hotoví používať. 420 00:20:38,050 --> 00:20:43,630 Takže to je základy súboru Aj / O. Pravdepodobne ste už videli, že pred, alebo 421 00:20:43,630 --> 00:20:45,710 Sledoval ju v tejto fantastickej skratu. 422 00:20:45,710 --> 00:20:48,410 Má niekto nejaké otázky, pred ideme do nejakej praxe kódovania 423 00:20:48,410 --> 00:20:51,800 problémy, o súboru I / O alebo kroky som prešiel? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [Písanie SOUNDS] 426 00:21:03,162 --> 00:21:04,150 >> JASON Hirschhorn: Myslíte si, mám otázku, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Nie 428 00:21:04,660 --> 00:21:04,740 >> JASON Hirschhorn: OK. 429 00:21:04,740 --> 00:21:06,746 Budem čakať ďalšie sedem sekúnd. 430 00:21:06,746 --> 00:21:07,590 [Smiech] 431 00:21:07,590 --> 00:21:08,620 To je naozaj dobrý tip. 432 00:21:08,620 --> 00:21:10,750 Vy proste nepáči klásť otázky. 433 00:21:10,750 --> 00:21:11,660 To je v poriadku. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Takže náš problém prvé prax je, že sme bude duplikovať funkciu 436 00:21:17,620 --> 00:21:22,330 nástroj príkazového riadka, ktorý pravdepodobne použiť pred - kópia - 437 00:21:22,330 --> 00:21:23,500 Nástroj kópie. 438 00:21:23,500 --> 00:21:28,050 Ak zadáte cp a potom ju preniesť dva Argumenty do terminálu, môžete 439 00:21:28,050 --> 00:21:28,980 skopírujte súbor. 440 00:21:28,980 --> 00:21:31,220 A to je to, čo sa deje písať teraz. 441 00:21:31,220 --> 00:21:35,830 >> Takže znovu, odčítanie z tohto snímku, by som môžete napísať program, ktorý trvá 442 00:21:35,830 --> 00:21:38,130 dve a iba dve príkazového riadku argumenty - 443 00:21:38,130 --> 00:21:40,750 zdrojový súbor a cieľový súbor - 444 00:21:40,750 --> 00:21:44,590 a skopíruje obsah zdroja súbor do cieľového súboru 445 00:21:44,590 --> 00:21:46,960 jeden bajt naraz. 446 00:21:46,960 --> 00:21:48,510 Tak to je veľa požiadať. 447 00:21:48,510 --> 00:21:52,200 >> Opäť platí, že dobrý spôsob, ako to je ísť rovno do C kódu, ale 448 00:21:52,200 --> 00:21:54,280 rozdeliť do niekoľkých krokov. 449 00:21:54,280 --> 00:21:58,400 Po prvé, premýšľať o logike - presne na čo sa pýtam vás robiť - 450 00:21:58,400 --> 00:22:00,620 a pochopiť všetky kroky k tomuto problému. 451 00:22:00,620 --> 00:22:04,410 Nie je v C, len v niektorých pseudokódu, alebo dokonca duševné model 452 00:22:04,410 --> 00:22:06,030 čo sa deje. 453 00:22:06,030 --> 00:22:10,050 >> Ďalej, až budete mať pseudokódu dole, prísť na to, ako v pseudokódu 454 00:22:10,050 --> 00:22:14,600 mapy na náradie a vecí, ktoré sme naučili používať v C. 455 00:22:14,600 --> 00:22:19,070 >> A nakoniec, až budete mať všetko, čo spoločne, môžete kódovať problém. 456 00:22:19,070 --> 00:22:23,370 Trvať 5 až 10 minút práce na tento problém. 457 00:22:23,370 --> 00:22:25,800 Dám inštrukcie späť do sekundy. 458 00:22:25,800 --> 00:22:27,990 A potom sme ísť cez pseudokódu, a kód 459 00:22:27,990 --> 00:22:29,230 to žiť ako skupina. 460 00:22:29,230 --> 00:22:31,640 >> Ak máte nejaké otázky, keď ste pracuje na tom, neváhajte zvýšiť 461 00:22:31,640 --> 00:22:34,260 tvoja ruka, a ja prišiel okolo a odpovedať na ne. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> STUDENT 7: Môžem prejdite kus papiera? 464 00:22:39,330 --> 00:22:41,537 >> JASON Hirschhorn: Čo sa deje? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [Písanie SOUNDS] 467 00:26:48,043 --> 00:26:48,730 >> JASON Hirschhorn: OK. 468 00:26:48,730 --> 00:26:51,710 Poďme sa nad pseudokódu prvý, a potom Dám vám pár viac 469 00:26:51,710 --> 00:26:52,960 minút na dokončenie kódovanie. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Kto by chcel, aby mi začať s prvom riadku 472 00:26:58,650 --> 00:27:00,030 pseudokódu pre túto funkciu? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> STUDENT 8: Skontrolujte, či ste dostali dva súbory. 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 A ak nie sme? 478 00:27:22,990 --> 00:27:25,974 >> STUDENT 8: Chcel by som sa vrátiť 0.. 479 00:27:25,974 --> 00:27:27,872 >> JASON Hirschhorn: Mali by sme sa vrátiť 0? 480 00:27:27,872 --> 00:27:30,182 >> STUDENT 8: Návrat - 481 00:27:30,182 --> 00:27:30,650 zaslepenie. 482 00:27:30,650 --> 00:27:30,850 Prepáčte. 483 00:27:30,850 --> 00:27:31,210 >> JASON Hirschhorn: Jo. 484 00:27:31,210 --> 00:27:32,710 Pravdepodobne nie 0. 485 00:27:32,710 --> 00:27:34,680 Vzhľadom k tomu, 0 znamená, že všetko, čo bolo dobré. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Takže to je prvý riadok z pseudokódu. 488 00:27:36,730 --> 00:27:38,715 Kto má druhý riadok pseudokódu? 489 00:27:38,715 --> 00:27:40,630 >> STUDENT 9: Open obidva súbory? 490 00:27:40,630 --> 00:27:41,880 >> JASON Hirschhorn: Otvorte oba súbory. 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: Pozrite sa, v prípade, že súbor je NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON Hirschhorn: Skontrolujte, , Že ani nie sú NULL. 496 00:28:12,580 --> 00:28:15,800 Ako stranou - 497 00:28:15,800 --> 00:28:17,540 lomítko 0 - 498 00:28:17,540 --> 00:28:18,887 je NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: Nie. 500 00:28:20,080 --> 00:28:21,190 >> JASON Hirschhorn: To nie je NULL. 501 00:28:21,190 --> 00:28:23,400 Tomu sa hovorí NULL zakončenie. 502 00:28:23,400 --> 00:28:25,580 Je to vlastne píše iba s jedným litrov. 503 00:28:25,580 --> 00:28:28,580 Takže kontrola niečo proti tomu - to je vlastne postava - 504 00:28:28,580 --> 00:28:31,710 tak niečo proti kontrole, ktorá je nie je to isté ako kontrola, či je 505 00:28:31,710 --> 00:28:32,690 rovná NULL. 506 00:28:32,690 --> 00:28:34,100 >> A niektorí ľudia - 507 00:28:34,100 --> 00:28:36,040 na ich kvízy a ich problémy súpravy - dostali 508 00:28:36,040 --> 00:28:36,890 dve z nich zamieňať. 509 00:28:36,890 --> 00:28:38,830 Ale dvaja z nich sú v skutočnosti iného. 510 00:28:38,830 --> 00:28:40,220 Jeden končí reťazec - 511 00:28:40,220 --> 00:28:43,210 jeden je ukazovateľ na 0. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: Prečo by ste skontrolovať, Uistite sa, že súbory nie sú NULL 513 00:28:46,490 --> 00:28:48,670 pred otvorením? 514 00:28:48,670 --> 00:28:54,772 >> JASON Hirschhorn: Tak otvorené šetrí niečo, čo v tomto súbore. 515 00:28:54,772 --> 00:28:57,780 A ak pôjdete tu - 516 00:28:57,780 --> 00:28:59,520 takže tento riadok - fopen - 517 00:28:59,520 --> 00:29:05,300 vám adresu a obchod že adresa v súbore, či to funguje. 518 00:29:05,300 --> 00:29:07,650 Ak to nefunguje, je to bude ukladať 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 Mám ťa. 522 00:29:08,500 --> 00:29:09,050 >> JASON Hirschhorn: V súbore. 523 00:29:09,050 --> 00:29:11,990 Takže nemôžete skontrolovať NULL predtým, než ste ich otvoril. 524 00:29:11,990 --> 00:29:13,520 NULL znamená, že niečo nie pracovať správne. 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 Takže skontrolujte, či ani jest? 528 00:29:22,590 --> 00:29:23,200 Alebo sú? 529 00:29:23,200 --> 00:29:23,770 Čo si myslíme? 530 00:29:23,770 --> 00:29:24,310 Pôjdeme s tým. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: Je. 532 00:29:24,520 --> 00:29:25,020 >> JASON Hirschhorn: Je? 533 00:29:25,020 --> 00:29:25,930 Ani je? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: Je. 535 00:29:26,350 --> 00:29:26,390 >> JASON Hirschhorn: OK. 536 00:29:26,390 --> 00:29:28,510 Zdá sa, že sa niektoré zhoda na tom. 537 00:29:28,510 --> 00:29:30,520 Ani je NULL. 538 00:29:30,520 --> 00:29:32,250 OK, ďalší riadok pseudokódu. 539 00:29:32,250 --> 00:29:33,600 Kto mi nedal ešte čiaru? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Budeme na teba čakať. 542 00:29:38,295 --> 00:29:39,020 Jo. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: Musíš čítať od prvého súboru? 544 00:29:40,895 --> 00:29:42,290 >> JASON Hirschhorn: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14: Alebo môžeme použiť fscanf alebo niečo ako, že prvý súbor? 546 00:29:46,240 --> 00:29:50,650 >> JASON Hirschhorn: Takže chceme čítať od prvého súboru a - 547 00:29:50,650 --> 00:29:51,900 nechajme to tu. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Čítanie zo zdrojového súboru. 550 00:30:01,880 --> 00:30:05,370 A potom, čo budeme robiť, keď sme čítať zo zdrojového súboru? 551 00:30:05,370 --> 00:30:06,620 Niekto iný? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENT 15: Napíšte do cieľový súbor? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON Hirschhorn: Píšeme cieľový súbor, a - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Čo ešte nám chýba? 558 00:30:30,030 --> 00:30:32,460 Niekto, kto mi nedal riadok kódu ešte - v pseudokódu. 559 00:30:32,460 --> 00:30:33,510 Jo. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16: Možno, že sa môžete vždy skontrolovať či je tu niečo na čítanie pre, 561 00:30:36,540 --> 00:30:37,970 ako ďalší riadok? 562 00:30:37,970 --> 00:30:39,550 To je rovnako ako ďalší riadok, uvidíme, či to existuje. 563 00:30:39,550 --> 00:30:40,660 >> [ELECTRONIC BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON Hirschhorn: Oops. 565 00:30:41,095 --> 00:30:43,120 To je môj denníka softvér. 566 00:30:43,120 --> 00:30:43,580 Jo? 567 00:30:43,580 --> 00:30:44,960 >> STUDENT 16: Jo. 568 00:30:44,960 --> 00:30:48,940 >> JASON Hirschhorn: Tak mi mi to ešte raz. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT 16: Skontrolujte, či je ešte ďalší riadok z 570 00:30:51,640 --> 00:30:52,920 zdrojový súbor čítať. 571 00:30:52,920 --> 00:30:53,500 >> JASON Hirschhorn: OK. 572 00:30:53,500 --> 00:30:56,060 Takže nie sme čítanie riadkov - boli tu čítania bajtov - 573 00:30:56,060 --> 00:30:57,590 ale máte pravdu. 574 00:30:57,590 --> 00:31:00,040 Chceme, čítať a písať, kým nie sú žiadne ďalšie bajtov. 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 A tak by mali byť naozaj členité bit, pretože sú pod ním. 578 00:31:16,940 --> 00:31:17,470 Je to tak? 579 00:31:17,470 --> 00:31:20,620 Kým sme z bytov, budeme čítať zo zdrojového súboru a zapisovať 580 00:31:20,620 --> 00:31:22,160 do cieľového súboru. 581 00:31:22,160 --> 00:31:24,510 >> A potom, čo je posledný rad pseudokódu? 582 00:31:24,510 --> 00:31:26,380 Niekto, kto nie je uvedený ma ešte niečo. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17: Zatvorte súbory? 585 00:31:30,260 --> 00:31:31,510 >> JASON Hirschhorn: Presne tak. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Zatvorte súbory. 588 00:31:37,450 --> 00:31:38,400 Takže je tu náš pseudokódu. 589 00:31:38,400 --> 00:31:41,870 Chystám sa dať pseudokódu do gedit, a za pár minút sme 590 00:31:41,870 --> 00:31:44,626 bude kód dohromady. 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 Poďme začať ako skupina. 594 00:33:58,290 --> 00:33:59,940 Nishant, mám nový súbor. 595 00:33:59,940 --> 00:34:01,130 Práve som otvoril to. 596 00:34:01,130 --> 00:34:01,880 Untitled Document 1. 597 00:34:01,880 --> 00:34:05,490 Čo je prvá vec, ktorú by som mal urobiť? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Zahrnúť knižnice? 599 00:34:07,040 --> 00:34:08,219 >> JASON Hirschhorn: OK. 600 00:34:08,219 --> 00:34:11,070 Aké knižnice? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: stdio.h, stdlib.h, verím, že? 602 00:34:17,570 --> 00:34:18,000 >> JASON Hirschhorn: OK. 603 00:34:18,000 --> 00:34:21,592 Čo je stdlib pre? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: Zabudol som. 605 00:34:23,010 --> 00:34:23,219 >> JASON Hirschhorn: OK. 606 00:34:23,219 --> 00:34:24,179 Tak sú štádiách. 607 00:34:24,179 --> 00:34:28,630 Čo by som mal urobiť ešte predtým, než Začnem kódovanie? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Napíšte hlavičky? 609 00:34:29,710 --> 00:34:31,830 >> JASON Hirschhorn: Ako môžem si to farebné? 610 00:34:31,830 --> 00:34:34,060 >> [Vložením VOICES] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Ako sa vám to farebné? 612 00:34:35,040 --> 00:34:38,060 >> JASON Hirschhorn: Ako si farbu som kódovanie? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Ja neviem. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Uložiť. 616 00:34:39,389 --> 00:34:39,929 >> JASON Hirschhorn: Save. 617 00:34:39,929 --> 00:34:40,270 Áno. 618 00:34:40,270 --> 00:34:41,760 Mal som ju uložiť ako. C.. 619 00:34:41,760 --> 00:34:46,239 Tak ju uložiť na plochu ako cp.c. 620 00:34:46,239 --> 00:34:47,280 Sladké. 621 00:34:47,280 --> 00:34:51,199 A keď chcem získať plný štýl body, čo by som mal 622 00:34:51,199 --> 00:34:53,085 sú na vrchole? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Dalo by sa napísať svoje meno, názov programu, a účel 624 00:34:58,390 --> 00:34:59,640 programu rovnako? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON Hirschhorn: Vyzerá to dobre. 627 00:35:10,040 --> 00:35:10,470 Výborný. 628 00:35:10,470 --> 00:35:12,940 Takže ste sa k nám nastupuje dokonale. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 budeme tiež písať - 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 Takže myslím, že som všetko, aby mohli vyraziť. 634 00:35:33,520 --> 00:35:38,003 Kto má prvý riadok kódu pre mňa - alebo prvé riadky kódu, ktoré 635 00:35:38,003 --> 00:35:41,280 to bude trvať uspokojiť naše prvé komentár v pseudokódu? 636 00:35:41,280 --> 00:35:41,985 Vy. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: Mala by to byť int argc, a potom char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON Hirschhorn: Myslím, že máš pravdu. 639 00:35:49,490 --> 00:35:56,270 Zmeňme to int main, otvorené zátvorka, int argc, čiarka, char * argv? 640 00:35:56,270 --> 00:35:57,150 Rovnako ako, že? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18: Zátvorky. 642 00:35:57,410 --> 00:35:58,260 >> JASON Hirschhorn: konzoly. 643 00:35:58,260 --> 00:35:59,860 Otvorte držiak, pravá zátvorka, zavrieť rodič. 644 00:35:59,860 --> 00:36:00,240 Perfect. 645 00:36:00,240 --> 00:36:02,160 Teraz môžem vziať argumenty príkazového riadku. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Uistite sa, my sme vzhľadom dva súbory. 648 00:36:04,250 --> 00:36:07,905 Môžete mi dať, že rovnako. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: Ak argc - 650 00:36:09,180 --> 00:36:11,060 Tento človek nemusí rovnať 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON Hirschhorn: Ak je otvorené zátvorka argc nie je rovné 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Jo, vrátite 1 alebo tak niečo. 653 00:36:16,970 --> 00:36:17,460 >> JASON Hirschhorn: Ospravedlňujem sa. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18: Návrat 1 alebo tak niečo. 655 00:36:19,120 --> 00:36:20,270 >> JASON Hirschhorn: return 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Skvelé. 658 00:36:22,970 --> 00:36:24,290 Otvorte oba súbory. 659 00:36:24,290 --> 00:36:26,160 Kto mi môže pomôcť otvoriť oba súbory? 660 00:36:26,160 --> 00:36:28,125 Kto mi nedal kód ešte? 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: Takže všetky čiapky F-I-L-E hviezdy zdroj. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON Hirschhorn: Idem aby sa na samohlásky. 666 00:36:40,920 --> 00:36:41,570 Tí, ktorí sú v pohode. 667 00:36:41,570 --> 00:36:42,716 Je to ako Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18: Rovná fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON Hirschhorn: Rovná fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18: Otvorené zátvorka, argv, otvorený držiak. 671 00:36:49,870 --> 00:36:50,055 >> JASON Hirschhorn: Počkajte. 672 00:36:50,055 --> 00:36:50,240 Prepáčte. 673 00:36:50,240 --> 00:36:51,050 Otvoriť zátvorka. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENT 18: Jo. 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: Jo. 679 00:36:56,140 --> 00:36:58,540 Argv otvorený držiak 1 - 680 00:36:58,540 --> 00:36:59,730 Áno. 681 00:36:59,730 --> 00:37:06,470 A potom sa čiarka, a potom otvorte dvojitým citácie, r, úvodzovky, 682 00:37:06,470 --> 00:37:08,250 zatvoriť zátvorka, bodkočiarka. 683 00:37:08,250 --> 00:37:09,450 >> JASON Hirschhorn: Sladký. 684 00:37:09,450 --> 00:37:10,950 A čo tá druhá? 685 00:37:10,950 --> 00:37:16,030 >> STUDENT 18: Veľmi podobná, ale namiesto toho S-R-C, mali by ste hovoriť D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON Hirschhorn: Oo! 687 00:37:17,060 --> 00:37:17,772 To sa mi páči. 688 00:37:17,772 --> 00:37:20,010 >> STUDENT 18: Just D-S-T. Jo. 689 00:37:20,010 --> 00:37:23,057 A potom argv, otvorený držiak, 2. 690 00:37:23,057 --> 00:37:23,200 Jo. 691 00:37:23,200 --> 00:37:26,720 A potom w namiesto r. 692 00:37:26,720 --> 00:37:27,620 Jo. 693 00:37:27,620 --> 00:37:29,630 >> JASON Hirschhorn: Skvelé. 694 00:37:29,630 --> 00:37:31,360 Ďalší pár riadkov. 695 00:37:31,360 --> 00:37:34,040 Tiež, ak niekto má čo pridať do linky, ktoré sme urobili, neváhajte 696 00:37:34,040 --> 00:37:35,690 pridať tie, ktoré sú tiež. 697 00:37:35,690 --> 00:37:37,520 Skontrolujte, či žiadny z nich nie je NULL. 698 00:37:37,520 --> 00:37:41,450 Kto mi môže dať kód, ktorý som potrebné uspokojenie, že rad pseudokódu? 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: Ak src rovná rovná NULL alebo dst rovná rovná 702 00:37:58,645 --> 00:38:04,590 NULL, potom sa vrátiť - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON Hirschhorn: Čo? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: Vráťte 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON Hirschhorn: Vráťte 2. 707 00:38:09,760 --> 00:38:14,400 Takže ak je otvorené zátvorka src rovná rovná NULL, alebo - 708 00:38:14,400 --> 00:38:15,590 čo to thing 's - potrubie? 709 00:38:15,590 --> 00:38:16,346 Pipe? 710 00:38:16,346 --> 00:38:17,140 Nazveme ho potrubia. 711 00:38:17,140 --> 00:38:22,340 Potrubia, rúrky, dst rovná rovná NULL, vráti 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Kým sme z bytov - 714 00:38:26,060 --> 00:38:29,820 sme sa nejako preskočil tomto kroku pseudokódu časť, ktorá bude tu. 715 00:38:29,820 --> 00:38:31,970 >> Ale kým sme z bytov - Čo to robí zvuk ako? 716 00:38:31,970 --> 00:38:34,680 Aký typ konštrukcie C - 717 00:38:34,680 --> 00:38:36,160 ale ja ho nepoužívam štruktúru slovo, pretože budeme chcete začať používať 718 00:38:36,160 --> 00:38:37,350 že v ostatných prípadoch - 719 00:38:37,350 --> 00:38:39,495 ale nástroj C Znie to ako? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19: slučka. 721 00:38:39,970 --> 00:38:40,980 >> JASON Hirschhorn: slučka. 722 00:38:40,980 --> 00:38:43,060 Znie to ako slučka. 723 00:38:43,060 --> 00:38:49,670 Takže, kto mi môže dať prvý riadok zo slučky kódu tu? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Môžete si tiež vybrať, aký druh slučka chceš, keď mi dáš 726 00:39:01,980 --> 00:39:03,215 Tento riadok kódu. 727 00:39:03,215 --> 00:39:04,150 Existujú tri druhy. 728 00:39:04,150 --> 00:39:06,530 Môžete si vybrať. 729 00:39:06,530 --> 00:39:08,080 Navrhoval by som jednu z nich. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Ktorý z nich chceš? 732 00:39:09,230 --> 00:39:09,960 >> AVI: PRO. 733 00:39:09,960 --> 00:39:11,460 >> JASON Hirschhorn: PRO. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i rovná nule. 735 00:39:15,180 --> 00:39:17,360 >> JASON Hirschhorn: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Táto časť si nie som istý. 737 00:39:18,570 --> 00:39:29,080 Ale aj menšia než veľkosť z hviezdy zdroja? 738 00:39:29,080 --> 00:39:31,128 Nie som si istý. 739 00:39:31,128 --> 00:39:32,580 >> JASON Hirschhorn: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Vzhľadom k tomu, že chcete veľkosť súboru, nie? 741 00:39:35,870 --> 00:39:41,090 >> JASON Hirschhorn: Takže to asi nebude nám veľkosť skutočnej 742 00:39:41,090 --> 00:39:43,010 súboru v bajtoch. 743 00:39:43,010 --> 00:39:47,680 Takže čo iného sme mohli robiť? 744 00:39:47,680 --> 00:39:48,810 Čo je iný typ slučky? 745 00:39:48,810 --> 00:39:50,180 Alebo by sme mali držať FOR slučky? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: Mohol by si urobiť WHILE slučky? 748 00:39:57,900 --> 00:40:01,350 A potom, čo by ste urobiť, je Bol by ste - 749 00:40:01,350 --> 00:40:03,930 pretože máme char * pre súbor. 750 00:40:03,930 --> 00:40:07,950 Takže ak budeme len držať zvyšovanie že až by sme nájsť NULL znak na 751 00:40:07,950 --> 00:40:08,500 Koniec to? 752 00:40:08,500 --> 00:40:11,130 Alebo nie, je to, že nie je ako súbory prácu? 753 00:40:11,130 --> 00:40:14,300 >> JASON Hirschhorn: Takže môžeme udržať zvyšovanie char * 754 00:40:14,300 --> 00:40:16,340 kým nenájdeme NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20: v podstate ďalej znak po znaku, kým sme narazili 756 00:40:18,580 --> 00:40:21,250 koniec súboru. 757 00:40:21,250 --> 00:40:21,600 >> JASON Hirschhorn: Áno. 758 00:40:21,600 --> 00:40:22,560 Takže to je to, čo chceme robiť. 759 00:40:22,560 --> 00:40:24,545 Chceme, aby sa čítanie, znak znakom, kým sa nedostaneme do 760 00:40:24,545 --> 00:40:25,080 koniec súboru. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Jo. 762 00:40:25,375 --> 00:40:25,860 Nájsť - 763 00:40:25,860 --> 00:40:28,540 čo je koniec, alebo stopka na konci textového súboru. 764 00:40:28,540 --> 00:40:28,620 >> JASON Hirschhorn: OK. 765 00:40:28,620 --> 00:40:30,140 Takže, keď sa dostaneme na koniec súboru - Ako vieme, že sme dosiahli 766 00:40:30,140 --> 00:40:33,200 koniec súboru? 767 00:40:33,200 --> 00:40:34,710 Ak volám - 768 00:40:34,710 --> 00:40:35,910 tak sa poďme krok späť. 769 00:40:35,910 --> 00:40:37,550 Čo je to funkcia? 770 00:40:37,550 --> 00:40:39,360 Poďme sa na tomto riadku tady. 771 00:40:39,360 --> 00:40:40,630 Čítanie zo zdrojového súboru. 772 00:40:40,630 --> 00:40:41,880 Kto mi môže dať, že riadok kódu? 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 Čo keď chcem čítať, veľmi konkrétne, jeden byte? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: Ja neviem. 780 00:40:56,860 --> 00:40:57,110 >> JASON Hirschhorn: OK. 781 00:40:57,110 --> 00:40:59,380 Ešte jednoduchšie než fscanf - to, čo je - 782 00:40:59,380 --> 00:41:01,890 Chcem čítať zo zdrojového súboru? 783 00:41:01,890 --> 00:41:03,720 Čítanie zo zdrojového súboru. 784 00:41:03,720 --> 00:41:04,850 Čo je to funkcia - jo. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: Je to fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON Hirschhorn: fread. 787 00:41:06,070 --> 00:41:07,550 Myslím si, poďme zostať u že jeden teraz. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Aký druh argumentov sa fread vziať? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: Pravdepodobne typ súboru, a potom umiestnenie v súbore? 791 00:41:17,410 --> 00:41:19,550 >> JASON Hirschhorn: Čo môžem písať tu prísť na to, aký typ argumentov 792 00:41:19,550 --> 00:41:20,950 fread trvá? 793 00:41:20,950 --> 00:41:23,710 >> VIAC ŠTUDENTI: Man fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON Hirschhorn: Muž fread a fwrite. 795 00:41:24,740 --> 00:41:25,980 Vyzerá to, že vyvesíme spoločne. 796 00:41:25,980 --> 00:41:29,589 Tak fread sa, ako veľa argumentov? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23: Štyri. 798 00:41:30,920 --> 00:41:32,690 >> JASON Hirschhorn: Trvá štyri argumenty. 799 00:41:32,690 --> 00:41:41,100 Trvá to ukazovateľ, veľkosť, a že vec, ktorá je divné, a niektoré súbor. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Poďme si o tom prečítať tu. 802 00:41:43,990 --> 00:41:49,370 "Funkcia fread číta n memb prvky dát, každá veľkosť bajtov 803 00:41:49,370 --> 00:41:53,840 dlhý, z potoka, na ktorý ukazuje prenášať, ukladať ich na mieste 804 00:41:53,840 --> 00:41:56,170 daný ukazovateľ. " 805 00:41:56,170 --> 00:41:57,960 >> Tak štyri argumenty. 806 00:41:57,960 --> 00:42:04,510 Prečo som len kopírovať to, a vložte ho tu. 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 Takže, kto môže začať vyplňovaní Tieto argumenty pre mňa? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Vyberte prázdnotu. 812 00:42:17,720 --> 00:42:20,530 Dajte len src. 813 00:42:20,530 --> 00:42:23,142 Vyberte ukazovateľ a hviezdu. 814 00:42:23,142 --> 00:42:26,102 Dajte src. 815 00:42:26,102 --> 00:42:27,050 Potom - 816 00:42:27,050 --> 00:42:28,500 >> JASON Hirschhorn: Tak ja idem k zastaveniu tam, pretože to je nesprávne. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Máš pravdu s src, ale kde by src ísť? 819 00:42:34,710 --> 00:42:35,960 >> [Vložením VOICES] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON Hirschhorn: Malo by ísť sem. 822 00:42:41,610 --> 00:42:43,790 To je src - naša src je typ. 823 00:42:43,790 --> 00:42:44,610 Poďme sa pozrieť tu. 824 00:42:44,610 --> 00:42:49,610 To sa pýta na typ FILE *, sme v skutočnosti zvyčajne vidieť takto. 825 00:42:49,610 --> 00:42:57,630 Tak to je žiadať o tvrdenie Typ súboru * zvaný prúd, ktorý je src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Aká veľkosť veci robiť chceme čítať? 828 00:43:00,410 --> 00:43:03,340 Vám to dal som popis problému. 829 00:43:03,340 --> 00:43:04,370 >> STUDENT 24: Jeden bajt naraz. 830 00:43:04,370 --> 00:43:05,340 >> JASON Hirschhorn: Jeden bajt. 831 00:43:05,340 --> 00:43:08,205 Aký veľký je byte? 832 00:43:08,205 --> 00:43:11,642 Jeho veľkosť je v bytoch, tak čo môžem dať tam? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25: One. 834 00:43:12,910 --> 00:43:14,730 >> JASON Hirschhorn: One. 835 00:43:14,730 --> 00:43:17,020 Správne. 836 00:43:17,020 --> 00:43:19,940 Jeho veľkosť je v jednotke byte, takže 1 je 1 byte. 837 00:43:19,940 --> 00:43:22,284 Koľko si chcem prečítať naraz. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26: One? 839 00:43:23,520 --> 00:43:24,270 >> JASON Hirschhorn: Jedna vec. 840 00:43:24,270 --> 00:43:28,540 Chcem čítať jednu vec veľkosti 1, jedno uhryznutie naraz. 841 00:43:28,540 --> 00:43:32,110 A kam mám dať, keď som čítal, že? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27: Cieľ? 844 00:43:36,510 --> 00:43:39,270 >> JASON Hirschhorn: Takže nemôžem dať to rovno do cieľa. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28: Budeš put sa do tretej ukazovateľ? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27: K určeniu. 847 00:43:41,780 --> 00:43:42,270 >> JASON Hirschhorn: OK. 848 00:43:42,270 --> 00:43:42,630 Jo. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29: Môžete deklarovať niečo slúžiť ako dočasné úložisko skôr. 850 00:43:46,820 --> 00:43:47,350 >> JASON Hirschhorn: OK. 851 00:43:47,350 --> 00:43:50,080 Daj mi to. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29: Ďalší súbor ukazovateľ, možná? 853 00:43:53,930 --> 00:43:54,220 >> JASON Hirschhorn: OK. 854 00:43:54,220 --> 00:43:55,585 Tak toto je neplatná hviezda - 855 00:43:55,585 --> 00:43:57,750 je to typ void hviezda, takže to nie je musí byť ukazovateľ súboru. 856 00:43:57,750 --> 00:44:02,520 A keď som čítal jeden bajt, kde by bolo dobré miesto 857 00:44:02,520 --> 00:44:03,850 uložiť jeden bajt? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29: array? 859 00:44:04,660 --> 00:44:05,770 >> JASON Hirschhorn: array. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 A čo je ešte niečo, čo je iba veľkosť jeden byte? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENT 30: char *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENT 29: Jo. 865 00:44:18,530 --> 00:44:19,880 >> JASON Hirschhorn: char * nie je jeden bajt. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29: char. 867 00:44:20,440 --> 00:44:21,810 >> JASON Hirschhorn: char je jeden byte. 868 00:44:21,810 --> 00:44:22,920 Je to tak? 869 00:44:22,920 --> 00:44:26,740 Takže hovorme tejto vyrovnávacej pamäte je všeobecný meno používa pre tieto veci pre ukladanie 870 00:44:26,740 --> 00:44:27,910 niečo dočasne. 871 00:44:27,910 --> 00:44:30,880 Tak som sa vytvoriť vyrovnávacia pamäť. 872 00:44:30,880 --> 00:44:31,150 Je to tak? 873 00:44:31,150 --> 00:44:32,990 Ale to trvať void *. 874 00:44:32,990 --> 00:44:38,660 Možno máte pravdu, že je to by mala byť vyrovnávacia pamäť o veľkosti 0. 875 00:44:38,660 --> 00:44:41,070 Tak to ukladá jeden - 876 00:44:41,070 --> 00:44:41,280 pravdu. 877 00:44:41,280 --> 00:44:43,560 >> Pretože to tu - char vyrovnávacia pamäť je charakter, ale 878 00:44:43,560 --> 00:44:45,110 to trvá void * - 879 00:44:45,110 --> 00:44:45,870 ukazovateľ. 880 00:44:45,870 --> 00:44:50,640 Takže som mohol urobiť, a teraz vyrovnávacia pamäť je ukazovateľ. 881 00:44:50,640 --> 00:44:53,214 Čo iné som mohla robiť? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT 31: Dajte si hviezda vedľa char. 883 00:44:55,775 --> 00:44:58,380 >> JASON Hirschhorn: Mohol by som Vytvorili je char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Čo je ďalšia vec, ktorú som mohol urobiť? 886 00:45:03,131 --> 00:45:04,050 Alebo poďme s týmto. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, takže to, čo môžem dať sem v? 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 je ukazovateľ na char. 893 00:45:14,500 --> 00:45:19,480 A v tomto mieste, dávame jeden byte z niečoho, čo som čítal. 894 00:45:19,480 --> 00:45:19,980 Jo. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Len rýchla otázka. 897 00:45:21,230 --> 00:45:24,440 Chcete malloc vyrovnávacia pamäť? 898 00:45:24,440 --> 00:45:25,930 >> JASON Hirschhorn: Kto môže odpoveď na túto otázku? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: No, to nie je naozaj prejdite na čokoľvek práve teraz, takže - 900 00:45:30,210 --> 00:45:32,610 >> JASON Hirschhorn: Ale robiť Chceme, aby to malloc? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32: Ak sa na to, že spôsobom, myslím, že jo, pretože by ste museli 902 00:45:35,600 --> 00:45:36,990 nejaké miesto na to, aby ukazoval na. 903 00:45:36,990 --> 00:45:38,350 >> JASON Hirschhorn: Máme musieť malloc? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: Ak sa chystáte na použitie mimo slučku. 905 00:45:40,580 --> 00:45:42,524 >> JASON Hirschhorn: Budeme používať mimo slučky? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: Áno. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35: Počkajte. 908 00:45:44,860 --> 00:45:46,980 Chceme, aby vyhlásiť ju v slučke na onen svet? 909 00:45:46,980 --> 00:45:50,100 >> JASON Hirschhorn: Tak myslím, že máme niektorí pseudo WHILE slučky tu, že sme 910 00:45:50,100 --> 00:45:51,950 sa snaží prísť na to, že sme sa dostali do ešte. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Nepotrebujeme, aby to malloc. 913 00:45:56,010 --> 00:45:59,310 Sme pracujúci v hlavnom, je to len ide , Ktoré majú byť použité v tejto slučky. 914 00:45:59,310 --> 00:46:00,540 Nie je potrebné, aby existovali mimo to. 915 00:46:00,540 --> 00:46:02,340 >> Takže to môže byť lokálna premenná. 916 00:46:02,340 --> 00:46:03,925 Máte ukazovateľ na lokálna premenná. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: Ale to nie je smerujúce k ničomu. 919 00:46:09,590 --> 00:46:11,540 >> JASON Hirschhorn: Nie, to nie je inicializované na čokoľvek. 920 00:46:11,540 --> 00:46:12,790 Ale my nebudeme používať tiež. 921 00:46:12,790 --> 00:46:15,300 Chystáme sa dať niečo do je to prvýkrát, čo sme ju používať. 922 00:46:15,300 --> 00:46:16,580 Tak to vyzerá v poriadku. 923 00:46:16,580 --> 00:46:17,780 Takže nepotrebujeme tú malloc. 924 00:46:17,780 --> 00:46:19,360 A ja si myslím, že je to v poriadku, ako je. 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 Máme fread linku. 928 00:46:27,190 --> 00:46:28,490 Poďme urobiť ďalší riadok. 929 00:46:28,490 --> 00:46:32,984 >> Ak chceme zapisovať do súboru, čo je dobrú funkciu použiť k tomu, že? 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 je jeden. 933 00:46:36,010 --> 00:46:37,260 Čo je ďalší? 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 A pre naše účely, fwrite, ktoré sme tu videli, je 937 00:46:41,250 --> 00:46:42,500 pravdepodobne lepšou voľbou. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 To trvá štyri argumenty rovnako. 940 00:46:53,950 --> 00:46:57,570 Nishant, môžete dať me argumenty? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Prvý z nich sa deje byť len vyrovnávacej pamäti. 942 00:47:00,570 --> 00:47:02,210 >> JASON Hirschhorn: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: druhý je len bude 1. 944 00:47:06,752 --> 00:47:09,510 Tretí to bude 1. 945 00:47:09,510 --> 00:47:11,470 A štvrtá bude dst. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON Hirschhorn: Má niekto akékoľvek otázky týkajúce sa tohto riadku? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 To vyzerá dobre. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Takže teraz to vyzerá, že na jednu vec, že ​​sme chýba - vlastne, poďme napísať 952 00:47:34,250 --> 00:47:35,090 tento posledný riadok. 953 00:47:35,090 --> 00:47:36,300 Zatvorte súbory. 954 00:47:36,300 --> 00:47:38,880 Kto nám môže skončiť písanie Tieto dva posledné riadky? 955 00:47:38,880 --> 00:47:39,120 Áno. 956 00:47:39,120 --> 00:47:39,850 Je nám ľúto, Ako sa voláte? 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 a potom fclose cieľ. 960 00:47:47,560 --> 00:47:52,430 >> JASON Hirschhorn: fclose, otvorené zátvorka, src, zatvoriť zátvorka, bodkočiarka. 961 00:47:52,430 --> 00:47:53,680 A fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 jo? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: Open zátvorky, dst a potom bodkočiarkou. 965 00:48:01,710 --> 00:48:02,520 >> JASON Hirschhorn: Skvelé. 966 00:48:02,520 --> 00:48:04,338 A čo by som mal obsahovať na konci? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Návrat 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON Hirschhorn: Návrat 0. 969 00:48:05,570 --> 00:48:06,820 Musím? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Len otázka. 972 00:48:12,590 --> 00:48:14,957 Ešte musíme zahrnúť výnos 0? 973 00:48:14,957 --> 00:48:16,240 >> VIAC ŠTUDENTI: Nie 974 00:48:16,240 --> 00:48:16,430 >> JASON Hirschhorn: Nie 975 00:48:16,430 --> 00:48:18,090 Hlavné automaticky robí ak sa dostanete do konca. 976 00:48:18,090 --> 00:48:20,580 Ale myslím, že to je pekné sú explicitne. 977 00:48:20,580 --> 00:48:23,860 Zvlášť, keď sa vraciate iné veci v celom programe. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 To je to, čo nám chýba - 980 00:48:26,230 --> 00:48:28,520 PRI čo? 981 00:48:28,520 --> 00:48:31,630 Kto môže myslieť na niektoré z nich - 982 00:48:31,630 --> 00:48:35,240 má nejaký zmysel, čo všetko mohol ísť tam? 983 00:48:35,240 --> 00:48:37,350 Aj keď je to len v niektorých pseudokódu ako jazyka? 984 00:48:37,350 --> 00:48:41,330 >> Čo sme vlastne - čo chceme ísť do? 985 00:48:41,330 --> 00:48:41,980 Jo, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: koniec súboru. 987 00:48:43,240 --> 00:48:44,990 >> JASON Hirschhorn: koniec súboru. 988 00:48:44,990 --> 00:48:49,280 Tak čo myslíš tým koniec súboru? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: Akonáhle sa dostanete koniec súboru, zastaviť. 990 00:48:50,955 --> 00:48:51,240 >> JASON Hirschhorn: OK. 991 00:48:51,240 --> 00:48:53,460 Takže akonáhle sa dostanete na koniec súboru. 992 00:48:53,460 --> 00:48:56,893 Ako vieme, že keď sme dosiahli koniec súboru? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: Myslím, že vyrovnávacia pamäť bude nastavená na hodnotu NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41: Buffer je deklarovaná vnútri slučky. 995 00:49:01,885 --> 00:49:03,670 >> JASON Hirschhorn: Takže si myslíte, že vyrovnávacej pamäte bude nastavená na hodnotu NULL. 996 00:49:03,670 --> 00:49:05,850 Prečo by vyrovnávacej pamäte je nastavená na NULL? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40: Vzhľadom k tomu, keď ste fread, snažíte sa dať 998 00:49:10,420 --> 00:49:13,528 nič do vyrovnávacej pamäti. 999 00:49:13,528 --> 00:49:13,980 >> JASON Hirschhorn: OK. 1000 00:49:13,980 --> 00:49:15,550 Takže si myslíš fread - 1001 00:49:15,550 --> 00:49:19,000 keď sme došli na koniec súbor, čo je fread robiť? 1002 00:49:19,000 --> 00:49:21,230 Myslím, že je to otázka musíme zistiť. 1003 00:49:21,230 --> 00:49:21,960 Čo fread robiť? 1004 00:49:21,960 --> 00:49:25,640 Znamená to dať NULL do vyrovnávacej pamäte, alebo to robí niečo iné? 1005 00:49:25,640 --> 00:49:27,510 Ako môžeme zistiť, čo je to? 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 Takže poďme sa pozrieť sem. 1009 00:49:32,280 --> 00:49:34,000 Návratová hodnota. 1010 00:49:34,000 --> 00:49:39,620 Na úspechu, fread a fwrite vrátiť Počet položiek čítať alebo zapisovať. 1011 00:49:39,620 --> 00:49:43,700 Toto číslo sa rovná počtu bajtov prevedené iba vtedy, keď veľkosť je 1. 1012 00:49:43,700 --> 00:49:47,780 Ak sa vyskytne chyba, alebo koniec je dosiahnuté súbor, návratová hodnota je 1013 00:49:47,780 --> 00:49:51,490 krátka počet položku alebo 0. 1014 00:49:51,490 --> 00:49:57,860 >> Takže pre naše účely, ak fread dosiahne koniec súboru, a číta 1015 00:49:57,860 --> 00:50:02,100 koniec súboru, tam je nič čítať, čo to ide vrátiť? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON Hirschhorn: Čo? 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 Bude to vráti nulu. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Takže vieme, že fread, keď sme došli na koniec súboru, bude 1023 00:50:13,010 --> 00:50:13,690 vrátiť sa na nulu. 1024 00:50:13,690 --> 00:50:17,460 Ako môžeme využiť k svojmu prospechu? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Môžete deklarovať premennú mimo slučky zvané kontrola. 1026 00:50:21,733 --> 00:50:27,040 Ak kontrola rovná - 1027 00:50:27,040 --> 00:50:28,190 teraz - jeden. 1028 00:50:28,190 --> 00:50:28,920 >> JASON Hirschhorn: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: A potom si môžete dať IF výkaz ihneď po fread hovorí, ak 1030 00:50:38,050 --> 00:50:42,600 fread sa rovná nule - 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: Kto môže pomôcť Avi von? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Čo je to hodnota vrátené fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON Hirschhorn: Jednoducho sme šiel cez to. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Ako si to predstavuje? 1038 00:50:55,450 --> 00:50:57,190 >> JASON Hirschhorn: Tak to sa vracia - poďme pozrite sa sem - vracia 1039 00:50:57,190 --> 00:50:59,340 size_t, čo je v podstate celé číslo. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Tak to vráti celé číslo. 1042 00:51:03,410 --> 00:51:05,160 A v našom prípade to bude návrat 1 alebo 0 - 1043 00:51:05,160 --> 00:51:08,760 1. ak to čítať jednu vec - jeden bajt, a 0, ak sme došli na koniec. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Takže ak fread - 1046 00:51:16,450 --> 00:51:16,855 jo? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: Nemôžete jednoducho dať plný fread (buffer, 1, 1, src) do 1048 00:51:20,330 --> 00:51:21,660 while? 1049 00:51:21,660 --> 00:51:26,510 >> JASON Hirschhorn: Takže navrhujete Tým sa tam? 1050 00:51:26,510 --> 00:51:27,600 >> [Vložením VOICES] 1051 00:51:27,600 --> 00:51:29,520 >> JASON Hirschhorn: Vydrž. 1052 00:51:29,520 --> 00:51:30,885 Takže sme zbaviť toho. 1053 00:51:30,885 --> 00:51:33,300 Takže navrhnúť uvedenie fread do tam? 1054 00:51:33,300 --> 00:51:35,457 Čo by sme mali tiež pohybovať ak chcete robiť, že? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45: vyrovnávací vonku. 1056 00:51:36,740 --> 00:51:38,110 >> JASON Hirschhorn: Mali by sme tiež presunúť to tu. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: Ale robí, že stále posunúť dopredu? 1058 00:51:41,700 --> 00:51:42,950 >> [Vložením 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 Tak toto je to, čo navrhol Okshar. 1062 00:51:50,570 --> 00:51:51,930 Vytvárame našu vyrovnávacej pamäti. 1063 00:51:51,930 --> 00:51:57,020 My WHILE fread, potom sme fwrite. 1064 00:51:57,020 --> 00:51:59,760 Myšlienky na to? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46: Moja jediná otázka je, by to vlastne spustiť príkaz fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON Hirschhorn: Veľká otázka. 1067 00:52:06,175 --> 00:52:11,050 Keď budete dávať volanie funkcie vnútri stave, robí 1068 00:52:11,050 --> 00:52:12,300 volanie funkcie vykonávať? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Už sme videli príklady tohto. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Je to tak? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENT 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Jo. 1075 00:52:26,590 --> 00:52:30,140 Takže to robí spustiť. 1076 00:52:30,140 --> 00:52:31,790 >> JASON Hirschhorn: Videli sme veci ako to predtým, kedy máme 1077 00:52:31,790 --> 00:52:33,550 volanie funkcie vnútri podmienky. 1078 00:52:33,550 --> 00:52:35,540 Znamená to, že volanie funkcie vykonávať? 1079 00:52:35,540 --> 00:52:36,350 Áno. 1080 00:52:36,350 --> 00:52:37,410 Takže odpoveď je áno. 1081 00:52:37,410 --> 00:52:41,010 Toto volanie funkcie bude vykonávať. 1082 00:52:41,010 --> 00:52:42,418 Ale opäť, je to, čo chceme? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Čo je jeden spôsob, ako by sme mohli prísť , Či je to to, čo chceme? 1085 00:52:52,204 --> 00:52:53,470 >> VIAC ŠTUDENTI: Spustite ju? 1086 00:52:53,470 --> 00:52:54,460 >> JASON Hirschhorn: Môžeme to spustiť. 1087 00:52:54,460 --> 00:52:57,500 Ale skôr, než to urobíme, mohli by sme aj rozum z toho. 1088 00:52:57,500 --> 00:52:57,920 Ak - 1089 00:52:57,920 --> 00:53:01,920 že máme jeden bajt v našej súbor, dostaneme sa sem, 1090 00:53:01,920 --> 00:53:02,660 dostaneme sa k tomuto kódu. 1091 00:53:02,660 --> 00:53:03,620 Tým sa spustí. 1092 00:53:03,620 --> 00:53:07,780 fread vráti jeden bajt a uložiť ich do pamäte. 1093 00:53:07,780 --> 00:53:11,290 A to vyhodnotí na 1, hneď potom, čo sa vráti jedna. 1094 00:53:11,290 --> 00:53:12,640 >> Takže zatiaľ čo 1. 1095 00:53:12,640 --> 00:53:15,325 Znamená to, že kód vnútri WHILE slučky bude vykonávať? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47: Jo. 1097 00:53:15,453 --> 00:53:16,040 To je pravda. 1098 00:53:16,040 --> 00:53:16,290 >> JASON Hirschhorn: Áno. 1099 00:53:16,290 --> 00:53:17,490 1. je pravda. 1100 00:53:17,490 --> 00:53:18,240 Nie je to 0. 1101 00:53:18,240 --> 00:53:20,360 Takže kód vnútri tu bude vykonávať. 1102 00:53:20,360 --> 00:53:22,300 Takže budeme písať, že. 1103 00:53:22,300 --> 00:53:25,340 Budeme sa vrátiť k tomu linka znova. 1104 00:53:25,340 --> 00:53:26,850 Teraz máme - 1105 00:53:26,850 --> 00:53:28,550 sme na konci nášho súboru. 1106 00:53:28,550 --> 00:53:30,980 Čítame z konca nášho súboru, pretože sme mali len jeden byte v ňom. 1107 00:53:30,980 --> 00:53:34,270 >> Fread vracia 0, obchody niečo v pufri. 1108 00:53:34,270 --> 00:53:35,890 Úprimne povedané, neviem, čo ukladá do vyrovnávacej pamäte. 1109 00:53:35,890 --> 00:53:38,380 Mohli by sme vyhľadať aby videli, čo to robí. 1110 00:53:38,380 --> 00:53:40,130 To ja naozaj neviem. 1111 00:53:40,130 --> 00:53:43,090 Nevieme, koho to zaujíma, čo ukladá do vyrovnávacej pamäte? 1112 00:53:43,090 --> 00:53:44,010 Ale to vráti 0. 1113 00:53:44,010 --> 00:53:45,440 A bude Kým 0 spustiť? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> PRI 0 sa nevykoná. 1116 00:53:51,180 --> 00:53:54,030 Takže sa budeme pohybovať sem. 1117 00:53:54,030 --> 00:53:58,870 Takže poďme sa zdvihnutím ruky, ak to je kód by sme mali spustiť, alebo ak sa 1118 00:53:58,870 --> 00:54:00,140 by mal urobiť ako prvé zmeny. 1119 00:54:00,140 --> 00:54:02,180 Takže ak si myslíte, že - budete musieť voliť. 1120 00:54:02,180 --> 00:54:06,885 Ak si myslíte, že by sme mali spustiť tento kód tak, ako je, prosím, zdvihnite ruku. 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 Je tu ešte jedna - 1124 00:54:14,315 --> 00:54:17,260 máte dotaz, obavy? 1125 00:54:17,260 --> 00:54:18,080 Jo. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: Potom, čo sme sa presunúť vyrovnávacej pamäti mimo slučky, my 1127 00:54:21,240 --> 00:54:22,670 musieť malloc? 1128 00:54:22,670 --> 00:54:23,310 >> JASON Hirschhorn: Veľká otázka. 1129 00:54:23,310 --> 00:54:26,670 Potom, čo sme sa presunúť bufferu mimo slučky, musíme to malloc? 1130 00:54:26,670 --> 00:54:28,400 To je rozsah otázka. 1131 00:54:28,400 --> 00:54:32,130 Ak budeme inicializovať vyrovnávacia mimo tejto slučky, bude existovať 1132 00:54:32,130 --> 00:54:33,534 vnútri slučky? 1133 00:54:33,534 --> 00:54:35,230 >> VIAC ŠTUDENTI: Áno. 1134 00:54:35,230 --> 00:54:35,580 >> JASON Hirschhorn: Áno. 1135 00:54:35,580 --> 00:54:40,100 Jeho pôsobnosť sa vzťahuje na vnútri slučky, a, naozaj, niečo nižšie je vnútri 1136 00:54:40,100 --> 00:54:42,460 tohto kódexu, vrátane veci vnútri tu. 1137 00:54:42,460 --> 00:54:43,930 Takže nepotrebujeme ju malloc. 1138 00:54:43,930 --> 00:54:47,766 Je to lokálne premenné, a jej rozsah stále obsahuje slučky. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: Potrebujeme ho oslobodiť? 1140 00:54:49,540 --> 00:54:51,770 >> JASON Hirschhorn: Máme treba voľnej pamäte? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Jo, keď to neurobíme malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON Hirschhorn: Máme treba voľnej pamäte? 1143 00:54:55,750 --> 00:54:57,160 My nie. 1144 00:54:57,160 --> 00:55:01,280 Opäť platí, že sa jedná o lokálnu premennú, takže sa nie je potrebné ju uvoľniť. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Pozrime sa, čo sa stane. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Tak to je inicializovaná. 1149 00:55:18,220 --> 00:55:20,830 To bolo to, čo niečo, Marcus navrhnuté skôr. 1150 00:55:20,830 --> 00:55:25,340 Takže sme si, že chyby, variabilný vyrovnávacej pamäti je inicializovaná pri tu použitý. 1151 00:55:25,340 --> 00:55:26,590 >> Ako môžeme tento problém vyriešiť? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50: malloc to? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51: rovná NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Povedzme, že vyrovnávacie rovná 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 Vyzerá to dobre. 1159 00:55:40,770 --> 00:55:42,410 Máme to teraz. 1160 00:55:42,410 --> 00:55:45,630 Poďme vytvoriť niečo vyskúšať kopírovanie. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Takže máme textový súbor. 1163 00:56:10,490 --> 00:56:11,740 Ako môžeme spustiť tento program? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Jo. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENT 53: Môžete to urobiť bodku lomítko cp, test.txt. 1167 00:56:22,230 --> 00:56:25,140 A potom môžete pomenovať ďalší súbor ktoré sa bude ukladať. 1168 00:56:25,140 --> 00:56:25,510 >> JASON Hirschhorn: OK. 1169 00:56:25,510 --> 00:56:27,380 Nazveme ju out.txt. 1170 00:56:27,380 --> 00:56:28,630 V pohode? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg chyba. 1173 00:56:34,320 --> 00:56:35,570 Myšlienky na poruchy seg? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 To je skvelé. 1176 00:56:41,390 --> 00:56:45,040 Ako môžeme zistiť, kde chyba seg je? 1177 00:56:45,040 --> 00:56:45,680 Čo je? 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 Prevádzkujeme gdb písomne ​​gdb bodka lomítko, Názov nášho programu. 1182 00:56:55,300 --> 00:56:57,020 Žiadne argumenty príkazového riadku tam. 1183 00:56:57,020 --> 00:56:59,570 Budeme nastaviť zarážku na hlavnej. 1184 00:56:59,570 --> 00:57:02,190 Ak chcem spustiť gdb, čo mám robiť? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON Hirschhorn: R. A čo potom? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55: Argumenty? 1188 00:57:09,400 --> 00:57:10,650 >> JASON Hirschhorn: A argumenty príkazového riadku. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Poďme sa prejsť. 1191 00:57:17,120 --> 00:57:19,090 N sa mi práve pri riadok po riadku. 1192 00:57:19,090 --> 00:57:21,450 Chystám sa ísť až do Mám moja chyba seg. 1193 00:57:21,450 --> 00:57:22,700 Tu je moja chyba seg. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Vyzerá to, že fread spôsobené moja chyba seg. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Viem, že fread spôsobila moja chyba seg, , Pretože to bol 1198 00:57:32,770 --> 00:57:34,950 linka sa práve spustený. 1199 00:57:34,950 --> 00:57:36,530 >> A jediná vec, ktorá bola deje v tomto riadku - 1200 00:57:36,530 --> 00:57:37,520 dve veci diali. 1201 00:57:37,520 --> 00:57:40,610 Fread sa deje, a potom sme boli robiť nejaké kontroly WHILE. 1202 00:57:40,610 --> 00:57:44,820 Som ochotný sa staviť, že WHILE kontrola nebola príčinou moja chyba seg. 1203 00:57:44,820 --> 00:57:46,950 S najväčšou pravdepodobnosťou, fread bol spôsobuje moja chyba seg. 1204 00:57:46,950 --> 00:57:49,260 Tiež vidím niečo, čo tu, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Kópia pamäti. 1206 00:57:50,500 --> 00:57:53,820 Znie to ako pohybujúce sa pamäť od jedno miesto na ďalšie. 1207 00:57:53,820 --> 00:57:56,890 Znie to ako niečo, čo by sa stalo v fread, možno niektoré pamäti 1208 00:57:56,890 --> 00:57:58,910 pohybujúce sa odtiaľto sem. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Poďme si prejsť to znova. 1211 00:58:03,860 --> 00:58:06,900 Ako mám začať, že cez a spustite ho znova? 1212 00:58:06,900 --> 00:58:08,092 Jo. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: Myslíte si, je potrebné, aby ampersand pred vyrovnávacej pamäti? 1214 00:58:15,140 --> 00:58:17,800 >> JASON Hirschhorn: Tak ampersand pred vyrovnávacej pamäti by mi dať adresu 1215 00:58:17,800 --> 00:58:22,330 vyrovnávacia pamäť, ktorá je char *. 1216 00:58:22,330 --> 00:58:25,250 Poďme si prejsť týmto ešte raz. 1217 00:58:25,250 --> 00:58:28,248 Ako môžem spustiť cez to ešte raz? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: Môže si len typ spustiť znova? 1219 00:58:29,210 --> 00:58:32,050 >> JASON Hirschhorn: Stačí zadať znova spustiť. 1220 00:58:32,050 --> 00:58:33,415 Takže my nebudeme vykonať tento riadok. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Takže pufor je ukazovateľ NULL. 1223 00:58:39,240 --> 00:58:40,490 Opravte? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 To ukazuje na - pozrime sa. 1226 00:58:47,060 --> 00:58:48,500 Ak máme naše - 1227 00:58:48,500 --> 00:58:50,430 nakresliť rýchlo vyfotiť. 1228 00:58:50,430 --> 00:58:53,500 Každý môže vidieť, ak Píšem tu? 1229 00:58:53,500 --> 00:59:02,890 >> Takže v zásobníku, máme miestnej variabilný a je to tzv vyrovnávacej pamäti, a 1230 00:59:02,890 --> 00:59:08,230 Je to ukazovateľ na char. 1231 00:59:08,230 --> 00:59:10,325 Čo adresa je tento znak v? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON Hirschhorn: Správne. 1234 00:59:13,400 --> 00:59:14,200 To je to, čo to je. 1235 00:59:14,200 --> 00:59:17,600 Tu, v pufri, je uložený 0x0. 1236 00:59:17,600 --> 00:59:20,480 To je to, čo máme - setup máme teraz. 1237 00:59:20,480 --> 00:59:27,540 Takže tento riadok, fread, dá niečo od zdroja, kde? 1238 00:59:27,540 --> 00:59:30,560 Do tohto poľa, alebo tento box? 1239 00:59:30,560 --> 00:59:31,060 Ktorý box? 1240 00:59:31,060 --> 00:59:33,290 Ľavé okno alebo pravé okno? 1241 00:59:33,290 --> 00:59:34,750 Toto právo box. 1242 00:59:34,750 --> 00:59:38,440 >> Z toho vyplýva, ukazovateľ, a vloží ho sem. 1243 00:59:38,440 --> 00:59:42,620 Keď sa budeme snažiť a dotyk pamäte na polohy 0, čo dostaneme? 1244 00:59:42,620 --> 00:59:45,050 Segmentation fault. 1245 00:59:45,050 --> 00:59:46,550 To je chyba teraz máme. 1246 00:59:46,550 --> 00:59:46,970 Jo. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: Ešte nemáte dať hviezdy vyrovnávacia pamäť? 1248 00:59:48,410 --> 00:59:49,180 Alebo nie? 1249 00:59:49,180 --> 00:59:50,050 Pre fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON Hirschhorn: Tak fread má ukazovateľ. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Takže to prejde v pufri. 1253 00:59:55,900 --> 00:59:58,980 A potom to bude de-referencie že niekde vnútri fread. 1254 00:59:58,980 --> 01:00:00,700 Ale opäť, videli sme, že sa ukazovateľ. 1255 01:00:00,700 --> 01:00:02,560 Nepotrebujeme ju odovzdať hviezdy vyrovnávacej pamäti. 1256 01:00:02,560 --> 01:00:05,350 To by bolo okolo to, čo je tu. 1257 01:00:05,350 --> 01:00:07,980 A to by asi nám chybu preto, že sme de-odkazovanie. 1258 01:00:07,980 --> 01:00:08,150 >> Je to tak? 1259 01:00:08,150 --> 01:00:10,690 Keď sme sa de-referencie tohto ukazovateľa, ak snažíme sa o prístup k tomuto umiestneniu, 1260 01:00:10,690 --> 01:00:13,140 dostávame chybu - naša chyba segmentácia. 1261 01:00:13,140 --> 01:00:15,800 Takže - 1262 01:00:15,800 --> 01:00:16,690 Oops. 1263 01:00:16,690 --> 01:00:19,090 Chystáme sa odísť z gdb. 1264 01:00:19,090 --> 01:00:20,160 Naša linka - 1265 01:00:20,160 --> 01:00:22,990 náš problém - má pravdu tu na tejto linke. 1266 01:00:22,990 --> 01:00:26,410 A to je problém, pretože z tejto línie. 1267 01:00:26,410 --> 01:00:31,780 >> Ako môžeme vytvoriť pole, ktoré je k dispozícii vo fread. 1268 01:00:31,780 --> 01:00:31,980 Je to tak? 1269 01:00:31,980 --> 01:00:35,190 Musíme vytvoriť pole, ktoré je jedným byte veľké, veľkosť char. 1270 01:00:35,190 --> 01:00:38,590 Ale my potrebujeme, že box bude prístupný ak táto funkcia vykonáva. 1271 01:00:38,590 --> 01:00:39,390 Takže tam, kde - 1272 01:00:39,390 --> 01:00:39,640 jo. 1273 01:00:39,640 --> 01:00:40,440 Nejaké nápady? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: Stačí len nastaviť ako akýkoľvek náhodný charakter. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Len to char buffera sa rovná charakter. 1277 01:00:51,640 --> 01:00:53,795 A potom, keď ste pufra tam - 1278 01:00:53,795 --> 01:00:54,110 >> JASON Hirschhorn: Počkajte. 1279 01:00:54,110 --> 01:00:55,110 Char vyrovnávacia pamäť? 1280 01:00:55,110 --> 01:00:55,880 Takže žiadna hviezda? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Jo. 1282 01:00:56,390 --> 01:00:58,560 Vyberte hviezdu. 1283 01:00:58,560 --> 01:01:00,690 Rovná náhodný charakter. 1284 01:01:00,690 --> 01:01:01,460 >> JASON Hirschhorn: OK. 1285 01:01:01,460 --> 01:01:02,420 Tak mi daj jeden. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Like, alebo tak niečo. 1287 01:01:03,170 --> 01:01:06,160 A potom, keď máte vyrovnávacej pamäti tam, môžete použiť - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: hviezda? 1289 01:01:06,420 --> 01:01:07,650 Ale nie, ampersand. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60: Používajte ampersand. 1291 01:01:09,000 --> 01:01:09,470 >> JASON Hirschhorn: OK. 1292 01:01:09,470 --> 01:01:11,320 A čo v fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60: Používajte ampersand znova. 1294 01:01:14,150 --> 01:01:14,320 >> JASON Hirschhorn: Dobre. 1295 01:01:14,320 --> 01:01:20,970 Takže vaša predstava je, že sme sa vytvoriť znak a dať niečo v ňom, a potom 1296 01:01:20,970 --> 01:01:22,612 napísať k tomuto char. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Jo. 1298 01:01:23,760 --> 01:01:25,916 >> JASON Hirschhorn: Čo si ľudia myslia? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: Je to spletitý. 1300 01:01:27,770 --> 01:01:28,460 >> JASON Hirschhorn: OK. 1301 01:01:28,460 --> 01:01:29,760 Poďme vytiahnite ju. 1302 01:01:29,760 --> 01:01:35,720 Takže tentoraz budem kresliť to v červená na zásobníku tu, a potom sme 1303 01:01:35,720 --> 01:01:36,410 bude mať - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Prepáčte. 1306 01:01:38,060 --> 01:01:45,930 Takže tentoraz máme niečo, čo nazýva vyrovnávacej pamäti, a to je na stacku. 1307 01:01:45,930 --> 01:01:48,430 Opravte? 1308 01:01:48,430 --> 01:01:51,520 A my uloženie v ňom je, spočiatku. 1309 01:01:51,520 --> 01:01:53,830 >> Potom máme výzvu na fread. 1310 01:01:53,830 --> 01:02:01,300 Čo fread to je, že trvá byte z náš súbor a dá to niekde. 1311 01:02:01,300 --> 01:02:04,570 Kladie to v akomkoľvek čo to ukazuje. 1312 01:02:04,570 --> 01:02:09,130 No, predtým, než sme mali túto adresu - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 A teraz, čo Adresa máme? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: niečo Adresa vyrovnávacej pamäte je. 1316 01:02:14,650 --> 01:02:15,970 >> JASON Hirschhorn: niečo Adresa vyrovnávacej pamäte je. 1317 01:02:15,970 --> 01:02:22,370 Je to asi bude niečo také. 1318 01:02:22,370 --> 01:02:26,950 Pravdepodobne začnú s b a f, a potom ďalších šesť 1319 01:02:26,950 --> 01:02:27,970 hexadecimálnych číslic. 1320 01:02:27,970 --> 01:02:28,480 Nezáleží na tom. 1321 01:02:28,480 --> 01:02:29,470 Niektoré adresu. 1322 01:02:29,470 --> 01:02:31,410 A my sme okolo tejto adresy palcov 1323 01:02:31,410 --> 01:02:34,790 >> A ideme dať náš jeden byte, čo na tejto adrese. 1324 01:02:34,790 --> 01:02:38,470 Takže ideme dať náš jeden byte, čo tu vo vnútri. 1325 01:02:38,470 --> 01:02:40,800 A potom budeme písať z čo je vôbec tu vnútri. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Má niekto nejaké otázky, o tom? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Kto si myslí, že tento kód bude fungovať? 1330 01:02:54,690 --> 01:02:56,020 >> Zdvihnite ruku, ak si myslíte, Tento kód bude fungovať. 1331 01:02:56,020 --> 01:02:57,270 Musíte zaujať stanovisko. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 A kto si myslí, že tento kód nebude fungovať? 1334 01:03:02,500 --> 01:03:04,610 Zdvihnite ruku. 1335 01:03:04,610 --> 01:03:06,750 Všetci ostatní by mali byť zdvihnutím ruky. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, kde stojíte? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL: Nemôžem sa rozhodnúť. 1339 01:03:10,680 --> 01:03:12,070 Druh v stredu. 1340 01:03:12,070 --> 01:03:12,736 >> JASON Hirschhorn: Vy ste v stredu. 1341 01:03:12,736 --> 01:03:13,092 Vyberte si jednu. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Ja budem mať vieru a hovoria, že to bude fungovať. 1343 01:03:14,400 --> 01:03:14,660 >> JASON Hirschhorn: OK. 1344 01:03:14,660 --> 01:03:16,047 Budete mať vieru, a hovoria, že to funguje? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Čo sa stalo? 1347 01:03:27,020 --> 01:03:28,270 >> [Vložením VOICES] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON Hirschhorn: Žiadna chyba seg. 1350 01:03:35,950 --> 01:03:40,320 Ako môžeme skontrolovať, či dve veci sú rovnaké? 1351 01:03:40,320 --> 01:03:42,060 Dva súbory sú rovnaké. 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 Rozdiel kontroly na rozdiely medzi dva súbory, a ak sa vráti 1355 01:03:51,630 --> 01:03:52,890 nič, sú totožné. 1356 01:03:52,890 --> 01:03:59,030 A keď sme sa otvoriť, dostaneme našu súbor. 1357 01:03:59,030 --> 01:04:00,490 Tak, že je správne riešenie. 1358 01:04:00,490 --> 01:04:01,780 Pozrime sa na to ešte raz. 1359 01:04:01,780 --> 01:04:04,080 My vlastne ani nemal je treba ju inicializovať. 1360 01:04:04,080 --> 01:04:05,520 >> Bolo by asi vyzerať trochu čistejšie, ak ste si ho nedali 1361 01:04:05,520 --> 01:04:07,680 niečo náhodne tam. 1362 01:04:07,680 --> 01:04:13,070 Bod je, čo ste potrebovali vytvoriť nejaký priestor pre uloženie niečo z 1363 01:04:13,070 --> 01:04:15,530 fread a vziať niečo z fwrite. 1364 01:04:15,530 --> 01:04:18,400 A to, čo musel byť buď miestne premennej na zásobníku - máte 1365 01:04:18,400 --> 01:04:19,890 Mohol som malloc'd nejaký priestor. 1366 01:04:19,890 --> 01:04:23,030 >> Takže sme vlastne mohli mať napísal malloc tu, a 1367 01:04:23,030 --> 01:04:25,420 že by to fungovalo. 1368 01:04:25,420 --> 01:04:28,660 A potom by sme boli skladovanie naše veci niekde na halde. 1369 01:04:28,660 --> 01:04:31,940 Ale to je v skutočnosti, pravdepodobne, najelegantnejšie riešenie. 1370 01:04:31,940 --> 01:04:34,490 Stačí vytvoriť nejaký priestor na zásobníku pre tieto veci ísť. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Chcel by som mať dve ďalšie pripomienky. 1373 01:04:38,990 --> 01:04:44,650 Ak by ste mali vziať obrat v tomto, a potom sa dal na to, moje poznámky 1374 01:04:44,650 --> 01:04:47,400 by takto. 1375 01:04:47,400 --> 01:04:54,300 Tieto 1 je tu, so mnou, pozrite sa ako magických čísel. 1376 01:04:54,300 --> 01:04:56,860 Toto 1, pokiaľ ide o fread, dáva zmysel. 1377 01:04:56,860 --> 01:04:59,580 To je počet vecí čítať alebo písať. 1378 01:04:59,580 --> 01:05:03,740 >> Ale toto tu by asi niečo iné. 1379 01:05:03,740 --> 01:05:05,180 Takže to, čo je riešenie? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: Veľkosť bytu. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON Hirschhorn: Ako, že? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: Veľkosť char. 1384 01:05:13,130 --> 01:05:13,820 >> JASON Hirschhorn: Veľkosť char. 1385 01:05:13,820 --> 01:05:15,290 Jo, byte nie je typ. 1386 01:05:15,290 --> 01:05:16,320 Takže veľkosť char prác. 1387 01:05:16,320 --> 01:05:30,270 Mohli by sme sa, v hornej časti náš kód, # definovaná tak, že. 1388 01:05:30,270 --> 01:05:33,410 Volal niečo BYTE a je to naozaj char. 1389 01:05:33,410 --> 01:05:37,675 Vlastne, ešte lepší prístup mohlo byť toto - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Vie niekto, čo to je? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Prepáčte. 1394 01:05:44,840 --> 01:05:46,090 Mám ju dozadu. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Počkajte, no. 1397 01:05:52,200 --> 01:05:53,450 Kadiaľ to ide? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Vie niekto, čo to je? 1400 01:05:59,660 --> 01:06:00,950 Jo. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67: má pomôcť zjednotiť cez systémy veci, ktoré 1402 01:06:05,650 --> 01:06:08,760 majú - rovnako ako celé čísla bez znamienka ktoré majú 8 bajtov? 1403 01:06:08,760 --> 01:06:11,785 >> JASON Hirschhorn: To je Presne tak. 1404 01:06:11,785 --> 01:06:14,310 Na rôznych strojoch, veľkosť char - 1405 01:06:14,310 --> 01:06:15,180 zvyčajne char. 1406 01:06:15,180 --> 01:06:16,100 Znaky sú zvyčajne jeden bajt. 1407 01:06:16,100 --> 01:06:19,590 Ale veľkosť iných dátových typov sú rôzne veľkosti na 32-bitovom počítači 1408 01:06:19,590 --> 01:06:21,370 verzus 64-bitové stroje. 1409 01:06:21,370 --> 01:06:25,180 Uint8_t je vždy 8 bitov - 1410 01:06:25,180 --> 01:06:27,210 vždy jeden bajt. 1411 01:06:27,210 --> 01:06:29,580 >> A ja potrebujem, aby zahŕňal štandardný súbor int hlavičky. 1412 01:06:29,580 --> 01:06:35,040 Takže teraz, to by boli pravdepodobne Najlepší spôsob, ako napísať tento kód. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Tak som sa zbaviť magických čísel. 1415 01:06:41,450 --> 01:06:44,690 A mám tiež logickejšie typ buffera. 1416 01:06:44,690 --> 01:06:49,450 To nie je len char, to je byte, čo je to, čo očakávame, že bude. 1417 01:06:49,450 --> 01:06:53,400 >> A tu, máme vlastne Bol trochu robustnejšie. 1418 01:06:53,400 --> 01:06:55,190 Nie sme volať to char, ktorý - 1419 01:06:55,190 --> 01:06:58,630 Možno, kto vie - môže byť odlišný veľkosť na rôznych strojoch. 1420 01:06:58,630 --> 01:07:02,025 Sme vlastne, že toto je presne to, jeden bajt, vždy, bez ohľadu na to, čo. 1421 01:07:02,025 --> 01:07:05,810 A ak sa pozrieme tu, robíme cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Čo sa stalo? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: To by mohlo byť zapnutý. 1426 01:07:16,170 --> 01:07:17,880 >> JASON Hirschhorn: Čo? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: Je to tak? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: To snáď nie definovať ako typ. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71: Ale to by byť definované v norme. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72: Čo sa deje? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73: Mala by definovať byť všetky kryty? 1434 01:07:40,210 --> 01:07:41,370 >> JASON Hirschhorn: Takže to nie je # define. 1435 01:07:41,370 --> 01:07:45,490 V skutočnosti, v tomto prípade, som bude používať typedef. 1436 01:07:45,490 --> 01:07:48,590 Pretože sme ju využívajú ako Typ na jednom mieste. 1437 01:07:48,590 --> 01:07:51,990 Takže v tomto prípade vlastne chceme, aby typedef, ako by sme tlačíte nový typ 1438 01:07:51,990 --> 01:07:54,490 byte, a to je, v podstate, to. 1439 01:07:54,490 --> 01:07:56,590 Je to trochu iné ako # define. 1440 01:07:56,590 --> 01:08:02,740 >> A teraz, náš kód funguje perfektne. 1441 01:08:02,740 --> 01:08:05,230 Takže, ešte raz, # define sa niečo, nahradí ho všade 1442 01:08:05,230 --> 01:08:06,780 sa na iné veci. 1443 01:08:06,780 --> 01:08:07,920 Je to len makro - 1444 01:08:07,920 --> 01:08:09,420 skratka, ako sa zbaviť magických čísel. 1445 01:08:09,420 --> 01:08:11,360 Ale v tomto prípade, pretože sme používať to ako typ - 1446 01:08:11,360 --> 01:08:12,180 tu - 1447 01:08:12,180 --> 01:08:19,880 aby za to pracovať, musíme na typedef, čo bajt. 1448 01:08:19,880 --> 01:08:21,840 >> A my sme ju definuje tu. 1449 01:08:21,840 --> 01:08:24,750 Nie je to struct, je to v skutočnosti iba celé číslo bez znamienka. 1450 01:08:24,750 --> 01:08:27,680 Je to jeden byte dlhý. 1451 01:08:27,680 --> 01:08:31,910 Tento kód bude k dispozícii on-line, a všetci ho mali mať hneď. 1452 01:08:31,910 --> 01:08:33,830 >> Takže máme - 1453 01:08:33,830 --> 01:08:34,250 perfektné - 1454 01:08:34,250 --> 01:08:41,359 13 minút odišiel ísť nad problémom sada 5. 1455 01:08:41,359 --> 01:08:44,270 Chcem sa prejsť copy.c spoločne, a potom sa budeme krátko prehovoriť 1456 01:08:44,270 --> 01:08:47,120 o ostatných častiach problému nastavenie. 1457 01:08:47,120 --> 01:08:48,899 Takže dovoľte mi, aby som vytiahnuť copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 A super vec je, že máme vlastne už napísané veľa tohto kódu. 1460 01:09:08,810 --> 01:09:11,180 >> Kód písali sme doslova vyšiel odtiaľ, keď som bol 1461 01:09:11,180 --> 01:09:13,120 písať to na vlastnú päsť. 1462 01:09:13,120 --> 01:09:16,990 Ale to je copy.c, tvorí základ pre prvú a druhú časťou 1463 01:09:16,990 --> 01:09:22,340 Problém sada pre whodunit.c, ktoré budete musieť napísať, a resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, čo je tretia a posledná Časť problému nastavenie, nie je 1465 01:09:27,050 --> 01:09:29,529 vychádza z tohto súboru. 1466 01:09:29,529 --> 01:09:32,200 >> Budeš musieť napísať, že súbor, my vám šablónu pre ktoré 1467 01:09:32,200 --> 01:09:34,620 súboru, ale to nemá nič spoločné čo do činenia s copy.c. 1468 01:09:34,620 --> 01:09:38,675 Ale pretože copy.c je základom pre Prvé dve časti, ideme 1469 01:09:38,675 --> 01:09:42,000 ísť cez neho, takže máte dobrý pocit z toho, čo to robí. 1470 01:09:42,000 --> 01:09:43,640 >> A pripomienky, aby niektoré z nich preč. 1471 01:09:43,640 --> 01:09:45,120 Sme už napísal niečo z toho. 1472 01:09:45,120 --> 01:09:49,220 Po prvé, robíme, že dostaneme tri argumenty. 1473 01:09:49,220 --> 01:09:50,560 Ďalej sme si spomenula na názov súboru. 1474 01:09:50,560 --> 01:09:52,960 Tak sme preskočili tento krok, ak sme kódované naša vec - 1475 01:09:52,960 --> 01:09:54,700 keď naše cp. 1476 01:09:54,700 --> 01:09:56,750 Ale tu, oni to robiť je to trochu čistejšie. 1477 01:09:56,750 --> 01:09:59,350 >> Sú kontroly, aby sa uistil obidva súbory sú dobré, v 1478 01:09:59,350 --> 01:10:00,450 Okrem ich otvorení. 1479 01:10:00,450 --> 01:10:04,760 Napísali sme všetko tento kód práve teraz, takže som nebude bývať na tomto kóde. 1480 01:10:04,760 --> 01:10:09,670 Ďalej je niektoré veci, ktoré je špecifické pre typy súborov, sme pomocou, ktorý 1481 01:10:09,670 --> 01:10:12,240 sú bitmapové súbory. 1482 01:10:12,240 --> 01:10:15,660 Bitmapové súbory majú nejaký metadáta sú s nimi spojené. 1483 01:10:15,660 --> 01:10:20,190 >> Takže prvých pár bajtov ti o súbore. 1484 01:10:20,190 --> 01:10:23,460 Sú to farby pixel v tomto snímku. 1485 01:10:23,460 --> 01:10:25,120 Povedia vám o súbore. 1486 01:10:25,120 --> 01:10:28,220 A ak budete čítať cez problému nastavenie, budete mať oveľa viac informácií 1487 01:10:28,220 --> 01:10:33,100 Na aké typy štruktúr metadát sú zahrnuté s bitmapami. 1488 01:10:33,100 --> 01:10:39,350 >> Ale to je dôvod, prečo máme tento prvý sada - tohto kódu priamo tu. 1489 01:10:39,350 --> 01:10:42,490 Sme čítanie metadáta - 1490 01:10:42,490 --> 01:10:45,800 dva kusy metadát - súbor hlavičky a informácie hlavičky. 1491 01:10:45,800 --> 01:10:51,030 A my sme kontrolu niektoré časti to, aby uistite sa, že je pravda, bitmapový súbor 1492 01:10:51,030 --> 01:10:52,420 pred pokračovaním. 1493 01:10:52,420 --> 01:10:55,470 >> A opäť, to sú detaily sme Nemusíte chodiť do teraz. 1494 01:10:55,470 --> 01:10:57,720 Ak budete čítať cez problému nastavenie, budete rozumieť nich. 1495 01:10:57,720 --> 01:11:01,370 Dlhý príbeh krátky, to sú len hovorím, to je súbor rastrového obrázka, a 1496 01:11:01,370 --> 01:11:02,810 potvrdzuje, že. 1497 01:11:02,810 --> 01:11:05,180 >> Ďalej budeme písať tie do súboru von. 1498 01:11:05,180 --> 01:11:05,660 Vidíme, že tu. 1499 01:11:05,660 --> 01:11:06,910 Píšeme na von ukazovateľ. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Ďalej sme určovanie polstrovanie. 1502 01:11:11,320 --> 01:11:15,240 Takže znovu, ako je zvláštnosť s Rastrový obrázok, niektoré linky sú 1503 01:11:15,240 --> 01:11:16,840 polstrovanie na konci. 1504 01:11:16,840 --> 01:11:19,000 A ak budete čítať cez problému nastavenie, budete sa dozvedieť viac o polstrovaním. 1505 01:11:19,000 --> 01:11:22,330 To je vzorec nájsť polstrovanie. 1506 01:11:22,330 --> 01:11:23,610 >> Dôležité mať na pamäti - 1507 01:11:23,610 --> 01:11:29,720 keď zmeníte veľkosť bitmapy súbor, polstrovanie zmeny. 1508 01:11:29,720 --> 01:11:31,970 Keď zmeníte veľkosť súbor, polstrovanie zmeny. 1509 01:11:31,970 --> 01:11:34,310 Je to nikdy nebude väčší ako 3 - 1510 01:11:34,310 --> 01:11:36,510 to bude 0 až 3, vrátane. 1511 01:11:36,510 --> 01:11:38,930 Ale keď zmeníte veľkosť niečo, polstrovanie zmeny. 1512 01:11:38,930 --> 01:11:47,100 >> Mám ak je iba jeden pixel v tejto rade, som Potrebujeme tri bajty polstrovaním, pretože 1513 01:11:47,100 --> 01:11:51,190 každý riadok musí byť deliteľné štyrmi bajtov dlhé do rastrového súboru. 1514 01:11:51,190 --> 01:11:56,120 Ale keď som sa zdvojnásobí to, ísť od jedného pixelu na dva pixel, z ktorých každá, 1515 01:11:56,120 --> 01:11:59,510 povedzme, je bajt, potom musím dva bajty polstrovaním, ako zarobiť 1516 01:11:59,510 --> 01:12:00,970 , Ktoré sa rovná štyri. 1517 01:12:00,970 --> 01:12:04,200 >> Takže keď som sa zmeniť veľkosť niečoho, Potrebujem zmeniť výšku 1518 01:12:04,200 --> 01:12:06,551 vypchávky mám. 1519 01:12:06,551 --> 01:12:08,100 Znamená to, že zmysel pre každého? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Ďalej sme iterácii každom riadku, alebo cez všetky riadky. 1522 01:12:18,720 --> 01:12:21,400 A potom iterovat každý stĺpec v každom riadku. 1523 01:12:21,400 --> 01:12:25,330 Sme liečbu tohto bitmapu ako mriežky, ako sme liečiť 1524 01:12:25,330 --> 01:12:26,490 Stravovanie v 15.. 1525 01:12:26,490 --> 01:12:29,200 >> Rovnako ako sme sa správali tehly, kedy sme vytlačili na obrazovke. 1526 01:12:29,200 --> 01:12:31,350 Mriežky riadkov a stĺpcov. 1527 01:12:31,350 --> 01:12:32,350 Potom - videli sme to. 1528 01:12:32,350 --> 01:12:33,840 Vlastne sme len kódované to. 1529 01:12:33,840 --> 01:12:35,780 Vytvorili sme nejaké dočasné uskladnenie. 1530 01:12:35,780 --> 01:12:38,710 Čítame tam, a potom píšeme ho. 1531 01:12:38,710 --> 01:12:42,680 To je presne to, čo práve urobil. 1532 01:12:42,680 --> 01:12:46,760 >> Ďalej, pretože som povedal, každý riadok končí v niektorých polstrovanie, sme 1533 01:12:46,760 --> 01:12:48,260 preskočiť tomto polstrovanie - 1534 01:12:48,260 --> 01:12:51,000 starý polstrovanie. 1535 01:12:51,000 --> 01:12:52,630 A potom pridáme späť. 1536 01:12:52,630 --> 01:12:55,140 V tomto prípade budeme vytvárať rovnaký presný súbor. 1537 01:12:55,140 --> 01:12:56,180 Sme jednoducho skopírovaním. 1538 01:12:56,180 --> 01:12:57,700 Takže tento riadok je trochu hlúpe. 1539 01:12:57,700 --> 01:12:59,660 Mohli sme doslova dal výplň palcov 1540 01:12:59,660 --> 01:13:04,290 >> Ale ak zmeníte veľkosť súboru, vy napriek tomu chcete tento riadok? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Takže ak zmeníme veľkosť súboru, máme ešte chcete preskočiť 1543 01:13:11,560 --> 01:13:12,810 cez staré čalúnenie? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENT 74: Áno. 1546 01:13:15,970 --> 01:13:17,090 >> JASON Hirschhorn: Tak my. 1547 01:13:17,090 --> 01:13:19,290 Pretože toto, zase, ponuka so zdrojovým súborom. 1548 01:13:19,290 --> 01:13:21,570 Nechceme starostlivosť o čalúnenie zo zdrojového súboru. 1549 01:13:21,570 --> 01:13:23,410 Chceme ísť na ďalší riadok. 1550 01:13:23,410 --> 01:13:28,850 Ale my jednoducho dať späť Starý množstvo polstrovanie. 1551 01:13:28,850 --> 01:13:31,540 Musíme sa vrátiť Nová výška polstrovaním. 1552 01:13:31,540 --> 01:13:35,810 >> Takže keď meníme veľkosť súbor, napriek tomu chceme preskočiť 1553 01:13:35,810 --> 01:13:38,270 polstrovanie v starom súboru - čo budeme čítať od. 1554 01:13:38,270 --> 01:13:40,370 Ale to, čo píšete, aby, ideme musieť vrátiť niektoré odlišné 1555 01:13:40,370 --> 01:13:41,890 počet polstrovanie, ktoré sme dospeli k záveru. 1556 01:13:41,890 --> 01:13:42,780 Jo. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75: Poradie týchto dvoch linky nezáleží, nie? 1558 01:13:44,550 --> 01:13:46,160 Vzhľadom k tomu, že ste manipuláciu rôzne súbory. 1559 01:13:46,160 --> 01:13:46,620 >> JASON Hirschhorn: Presne tak. 1560 01:13:46,620 --> 01:13:48,220 Poradie týchto dvoch liniek nezáleží. 1561 01:13:48,220 --> 01:13:49,790 Píšeme tento riadok. 1562 01:13:49,790 --> 01:13:51,430 To je tu pre súbor sme písomne. 1563 01:13:51,430 --> 01:13:54,370 To je dôležité, aby sme si správne množstvo čalúnenie. 1564 01:13:54,370 --> 01:13:57,560 To sa musí vysporiadať so súborom. 1565 01:13:57,560 --> 01:13:58,560 Chceme preskočiť rovno cez výplň. 1566 01:13:58,560 --> 01:13:59,470 >> Nechceme, aby čítanie - 1567 01:13:59,470 --> 01:14:01,500 ak budeme čítať byte v čase, sme Nestarám sa o tieto doplnkové bajty. 1568 01:14:01,500 --> 01:14:04,070 Chceme sa presunúť na ďalší riadok. 1569 01:14:04,070 --> 01:14:11,800 Nakoniec rovnako ako Lucy dal za nás, zavrieme súbory a vráti 0. 1570 01:14:11,800 --> 01:14:13,890 Tak toto je copy.c. 1571 01:14:13,890 --> 01:14:17,850 A my vlastne napísal - sme strávili väčšinu časť písania tohto, v podstate. 1572 01:14:17,850 --> 01:14:18,740 >> Urobil si to. 1573 01:14:18,740 --> 01:14:22,440 Takže dúfajme, že budete mať dobrý pocit o tom, čo sa deje tu. 1574 01:14:22,440 --> 01:14:25,890 Veľký rozdiel, úprimne povedané, je len Táto prvá časť, ktorá sa zaoberá 1575 01:14:25,890 --> 01:14:29,970 zvláštnosti bitmapové súbory. 1576 01:14:29,970 --> 01:14:33,570 Tak som si ako môj ďalší záber, Čo musíme urobiť? 1577 01:14:33,570 --> 01:14:35,510 Dobre, poďme premýšľať o tom, detektívka. 1578 01:14:35,510 --> 01:14:38,080 >> A pre niekoho, kto si cez problém nastaviť to, čo máme 1579 01:14:38,080 --> 01:14:41,410 je potrebné urobiť, detektívka? 1580 01:14:41,410 --> 01:14:42,080 Jednoducho. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Môžeš si vziať tú časť každého pixelu, ktorá označuje red. 1583 01:14:48,570 --> 01:14:49,730 A potom - 1584 01:14:49,730 --> 01:14:50,730 druh? 1585 01:14:50,730 --> 01:14:51,860 >> JASON Hirschhorn: OK. 1586 01:14:51,860 --> 01:14:54,460 Tak sa tu časť každého pixel, ktorý označuje červená. 1587 01:14:54,460 --> 01:14:57,234 Je to blízko, ale nie všetky z nich. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: No, je tu rôzne spôsoby, ako to urobiť. 1589 01:14:59,780 --> 01:14:59,870 >> JASON Hirschhorn: OK. 1590 01:14:59,870 --> 01:15:03,070 Daj mi jednu cestu. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: Vyberte všetky červené a potom zdôraznil, modrej a zelenej. 1592 01:15:08,240 --> 01:15:10,010 >> JASON Hirschhorn: OK. 1593 01:15:10,010 --> 01:15:11,830 Takže vzhľadom oba tieto spôsoby - 1594 01:15:11,830 --> 01:15:15,210 to znie, ako by sme dať pixel, to má červenú, modrú a zelenú hladinu. 1595 01:15:15,210 --> 01:15:19,350 Chceme zmeniť relatívnej úrovne červenej, modrej a zelenej, v závislosti 1596 01:15:19,350 --> 01:15:20,740 na tomto pixelu. 1597 01:15:20,740 --> 01:15:28,380 Keď je v tomto kóde mali by sme zmeniť relatívna červená, modrá, zelená 1598 01:15:28,380 --> 01:15:29,720 hladiny daného pixelu. 1599 01:15:29,720 --> 01:15:30,600 Potom, čo sme si to - 1600 01:15:30,600 --> 01:15:32,520 predtým, než sme to napísať? 1601 01:15:32,520 --> 01:15:34,564 Daj mi číslo riadku. 1602 01:15:34,564 --> 01:15:35,950 >> VIAC ŠTUDENTI: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON Hirschhorn: 83. 1604 01:15:37,320 --> 01:15:38,570 Tak tu. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Pre detektívka, kód, ktorý je potrebné zápisnica by mal ísť všetci tu. 1607 01:15:45,710 --> 01:15:47,640 A to je iba kód musíte napísať. 1608 01:15:47,640 --> 01:15:51,520 Vzhľadom k tomu, ako sme počuli, všetko, čo potrebujete urobiť, je zmeniť tieto relatívna modrá, 1609 01:15:51,520 --> 01:15:54,420 červenej a zelenej úrovne z každého pixelu. 1610 01:15:54,420 --> 01:15:58,250 >> Čítal ste ju, a teraz ste bude písať to. 1611 01:15:58,250 --> 01:16:03,100 Ako sa dostanem - keď mám túto vec tzv triple, tu, a to je 1612 01:16:03,100 --> 01:16:04,570 typ RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 dobre, ak sme sa pozreli na bmp.h, čo je RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: Je to struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON Hirschhorn: RGBTRIPLE je struct. 1618 01:16:18,900 --> 01:16:22,330 Vidíme, že tu dole. 1619 01:16:22,330 --> 01:16:26,600 A tak keď som chcel, aby prístup, povedzme, červená úroveň struct, ako to mám 1620 01:16:26,600 --> 01:16:30,005 prístup červenú úroveň tohto struct? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS šelesty] 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: Je to pravda? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENT 79: Malo by byť trojitý bodka, miesto RGBTRIPLE bodky? 1626 01:16:53,040 --> 01:16:54,120 >> JASON Hirschhorn: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple je lokálna premenná, tak tu, je tu žiadne ukazovatele tu. 1628 01:16:56,700 --> 01:16:58,400 Takže sme jednoducho použiť bodka notáciu. 1629 01:16:58,400 --> 01:17:00,480 To mi dá úrovne červenej. 1630 01:17:00,480 --> 01:17:06,180 Ak chcem to zmeniť, som nastaviť to rovnať na niečo iné. 1631 01:17:06,180 --> 01:17:13,190 Takže znovu, tento riadok kódu prístupov táto premenná vnútri tohto struct, a 1632 01:17:13,190 --> 01:17:15,070 môžeme nastaviť tak, aby niečo nové. 1633 01:17:15,070 --> 01:17:20,040 >> Takže pre detektívka, opäť, je to, v podstate to, čo musíme urobiť. 1634 01:17:20,040 --> 01:17:21,170 Veľmi jednoduché. 1635 01:17:21,170 --> 01:17:25,020 Stačí zmeniť niektoré relatívnej úrovne, a to je miesto, kde že kód pokračuje. 1636 01:17:25,020 --> 01:17:27,720 Zmena veľkosti, na druhej strane, je to trochu zložitejšie. 1637 01:17:27,720 --> 01:17:30,900 V skutočnosti, pre zmenu veľkosti je pravdepodobne najzložitejšia časť tohto problému nastavenie. 1638 01:17:30,900 --> 01:17:32,720 Máme tri minúty ísť cez neho. 1639 01:17:32,720 --> 01:17:34,910 >> Ale zase sme už písali väčšina tohto kódu, a tak sme 1640 01:17:34,910 --> 01:17:36,500 by mala byť celkom povedome. 1641 01:17:36,500 --> 01:17:40,750 Aké sú niektoré veci, ktoré chceme robiť v zmeniť veľkosť, ak ste si prečítali na 1642 01:17:40,750 --> 01:17:43,470 problém nastaviť? 1643 01:17:43,470 --> 01:17:45,290 Dáte Ak mi je, sme možno hovoriť o nich. 1644 01:17:45,290 --> 01:17:47,340 Aké sú niektoré veci, ktoré sme chceli urobiť? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80: Vertikálne - 1646 01:17:47,970 --> 01:17:52,360 takže budete musieť horizontálne zmeniť jeho veľkosť, ale vertikálne zmeniť jeho veľkosť, rovnako? 1647 01:17:52,360 --> 01:17:58,475 >> JASON Hirschhorn: Takže ak máme daný pixel, a ak chceme zmeniť veľkosť ho 1648 01:17:58,475 --> 01:18:03,460 faktor dva, teraz musí byť zmeniť veľkosť vodorovne a zmene veľkosti 1649 01:18:03,460 --> 01:18:05,220 vertikálne. 1650 01:18:05,220 --> 01:18:06,640 Má to zmysel? 1651 01:18:06,640 --> 01:18:07,060 Jo. 1652 01:18:07,060 --> 01:18:09,300 Tak to je asi Najväčšou výzvou. 1653 01:18:09,300 --> 01:18:10,430 A budeme o tom hovoriť v sek. 1654 01:18:10,430 --> 01:18:11,065 Jo. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: ako som o tom premýšľal bol ste potrebovali vytlačiť - 1656 01:18:15,270 --> 01:18:15,490 >> JASON Hirschhorn: Počkajte. 1657 01:18:15,490 --> 01:18:17,580 Nikdy nám nepovedal, čo si urobil. 1658 01:18:17,580 --> 01:18:20,620 Budeme hovoriť v logike. 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 Aká bola otázka? 1662 01:18:27,410 --> 01:18:28,892 >> JASON Hirschhorn: Len zdvihol ruku. 1663 01:18:28,892 --> 01:18:31,600 Nebolo pochýb. 1664 01:18:31,600 --> 01:18:32,520 Dovoľte mi, aby som to predstaviť. 1665 01:18:32,520 --> 01:18:34,560 Dovoľte mi, aby som diskutovať o tejto krátko. 1666 01:18:34,560 --> 01:18:38,400 Takže sme jeden pixel, chceme replikovať, a to ako horizontálne, tak 1667 01:18:38,400 --> 01:18:39,360 vertikálne. 1668 01:18:39,360 --> 01:18:48,920 Takže v ideálnom prípade to, čo robíme tu, je, sme prečítať v našom pixelu, môžeme napísať, že 1669 01:18:48,920 --> 01:18:51,690 však mnoho časov. 1670 01:18:51,690 --> 01:18:54,720 >> Ale potom máme trik tu, pretože potom chceme preskočiť k 1671 01:18:54,720 --> 01:18:57,660 ďalší riadok a napísať, že na začiatok ďalšieho riadku. 1672 01:18:57,660 --> 01:19:02,960 Takže ak chceme replikovať aj horizontálne aj vertikálne, čo je 1673 01:19:02,960 --> 01:19:05,050 jeden dobrý spôsob, ako to urobiť - 1674 01:19:05,050 --> 01:19:06,780 jeden dobrý aj keď na to? 1675 01:19:06,780 --> 01:19:11,950 Takže nepotrebujeme neustále hľadať okolo nášho súboru umiestniť veci. 1676 01:19:11,950 --> 01:19:14,360 >> Táto otázka nemusí mať Dávalo to zmysel, ale myslím, že 1677 01:19:14,360 --> 01:19:15,800 odpoveď na to pomôže. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: Vytvorenie poľa? 1679 01:19:17,210 --> 01:19:20,090 >> JASON Hirschhorn: Tak poďme myslieť každého súboru ako radu. 1680 01:19:20,090 --> 01:19:22,550 Poďme si, že pokiaľ ide o radoch. 1681 01:19:22,550 --> 01:19:26,670 Ak máme prvý riadok z našej malej obrázok, môžeme túto sériu 1682 01:19:26,670 --> 01:19:30,640 do veľkej radu z veľkého obrazu, a potom sa replikovať tento riadok však 1683 01:19:30,640 --> 01:19:34,250 koľkokrát je potrebné replikovať, skôr než ísť pixel po pixeli, 1684 01:19:34,250 --> 01:19:37,260 ktorá sa dostane mätúce, keď zaoberajúca sa súbory. 1685 01:19:37,260 --> 01:19:38,730 >> Pretože keby sme mali - 1686 01:19:38,730 --> 01:19:41,260 Bežím z vesmíru. 1687 01:19:41,260 --> 01:19:46,490 Ak je to náš súbor, a máme, že tam jeden pixel, a chceme, aby to 1688 01:19:46,490 --> 01:19:49,840 tu, máme stále nejaké veci že treba ísť tam, keď sme 1689 01:19:49,840 --> 01:19:51,450 písanie a vytváranie nášho nového súboru - 1690 01:19:51,450 --> 01:19:53,250 náš súbor, ktorý je dvakrát tak veľký. 1691 01:19:53,250 --> 01:19:56,820 >> Ale je to naozaj ťažké s funkciami súborov preskočiť okolo nových liniek 1692 01:19:56,820 --> 01:20:00,260 takto, a potom sa vráťte sem a dať veci tam. 1693 01:20:00,260 --> 01:20:04,500 Je takmer nemožné, aby niečo rovnako ako to, že v prípade, že má zmysel. 1694 01:20:04,500 --> 01:20:10,180 Takže, ak si myslíme, že ide o radoch, môžeme sa naše rady, a potom ju - 1695 01:20:10,180 --> 01:20:11,720 kopírovať riadky zvisle. 1696 01:20:11,720 --> 01:20:15,860 >> A to je, ako sa vysporiadať s veľkosťou vertikálne, nie horizontálne. 1697 01:20:15,860 --> 01:20:18,810 To bolo celkom rýchle, a trochu mätúce. 1698 01:20:18,810 --> 01:20:22,375 Bohužiaľ náš čas vypršal. 1699 01:20:22,375 --> 01:20:27,340 Budem stáť vonku pre tých z vás, Tu, ktorí majú otázky týkajúce sa 1700 01:20:27,340 --> 01:20:30,500 Problém set, vrátane obnoviť. 1701 01:20:30,500 --> 01:20:32,320 >> Takže poďme odročiť teraz. 1702 01:20:32,320 --> 01:20:34,480 A opäť, ak máte nejaké otázky, môžeme rozprávať vonku. 1703 01:20:34,480 --> 01:20:38,294