1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON Hirschhorna: Dobrodošli, vsakdo, do 6. tedna. 3 00:00:09,840 --> 00:00:14,790 Vesel sem, da vas je vse videti živ in zdrav Po Kviz 0, ker vem, da 4 00:00:14,790 --> 00:00:15,810 je bil malce grobo. 5 00:00:15,810 --> 00:00:18,370 Ampak na srečo, ste vsi naredil neverjetno dobro. 6 00:00:18,370 --> 00:00:21,680 In tako, da je čudovito. 7 00:00:21,680 --> 00:00:25,840 Če ste v mojem oddelku, sem dal najbolj od tebe nazaj svoj kvizi že. 8 00:00:25,840 --> 00:00:28,050 >> Nekaj ​​od vas, imam sestanek po pouku. 9 00:00:28,050 --> 00:00:32,360 In če ste študent razširitev in niste prejeli kviz nazaj 10 00:00:32,360 --> 00:00:35,490 Še vaš TF je verjetno delajo na tem in razvrščanje, in da jih bodo dobili nazaj 11 00:00:35,490 --> 00:00:36,490 z vami kmalu. 12 00:00:36,490 --> 00:00:39,650 Torej moj podaljški študente, ki so gledal zdaj - upam živeti - 13 00:00:39,650 --> 00:00:42,880 Jaz bom dobil svoje kvizi kmalu tudi. 14 00:00:42,880 --> 00:00:45,670 >> Naša agenda za danes je, kot sledi. 15 00:00:45,670 --> 00:00:50,170 Najprej smo šli čez nekaj Sredstva, ki CS50 zagotavlja, da vas. 16 00:00:50,170 --> 00:00:54,590 Mi smo šli čez kviz 0 naslednji, in Odgovoril bom na vsa vprašanja, koga 17 00:00:54,590 --> 00:00:57,360 ima o posameznih problemih. 18 00:00:57,360 --> 00:01:02,050 In potem bomo šli čez Datoteka I / O in problem določiti 5. 19 00:01:02,050 --> 00:01:07,360 Ti dve zadnji teme bo up večino odseka danes. 20 00:01:07,360 --> 00:01:11,680 >> Vsak teden sem dal ta seznam, ko Opomnik za vas vse, ampak jedro 21 00:01:11,680 --> 00:01:14,650 oddelek, imamo le 90 minut - mi niso mogla pokriti vse, kar sem 22 00:01:14,650 --> 00:01:16,280 bi radi, da kritje za vas. 23 00:01:16,280 --> 00:01:21,170 Vendar imamo ton sredstev za vam črpati, kot boste spoznali 24 00:01:21,170 --> 00:01:24,000 materiala in dela preko tvoj problem postavlja. 25 00:01:24,000 --> 00:01:30,810 >> Opomin, da imam na spletu besedilo box, ustanovljenega za vas, da izpolnite, če ste 26 00:01:30,810 --> 00:01:33,250 kakršne koli povratne informacije zame, tako pozitivno kot 27 00:01:33,250 --> 00:01:35,180 konstruktivno, o oddelku. 28 00:01:35,180 --> 00:01:38,600 Ta URL se nahaja tukaj dol. 29 00:01:38,600 --> 00:01:43,250 Torej prosim, vzemite si trenutek, če imate povratne informacije, ali je v oddelku, 30 00:01:43,250 --> 00:01:48,030 ali po njem, ali pa po ogledu videoposnetka spletu, da mi vaše povratne informacije. 31 00:01:48,030 --> 00:01:52,100 Res cenim vse in vse to. 32 00:01:52,100 --> 00:01:55,730 >> Torej sem imel majhne pogovorov z veliko mojih 33 00:01:55,730 --> 00:01:59,350 študenti ves teden - kot sem roko nazaj kvizi, ki govori o 34 00:01:59,350 --> 00:02:01,480 Seveda, ko vidijo, kako delaš. 35 00:02:01,480 --> 00:02:05,120 In je ena tema prišel mimo in več govoriti o - v 36 00:02:05,120 --> 00:02:05,660 Zlasti - 37 00:02:05,660 --> 00:02:07,710 Problem določa. 38 00:02:07,710 --> 00:02:13,090 In sem zaprta to temo na krovu zdaj. 39 00:02:13,090 --> 00:02:16,630 >> V bistvu, obstaja razlika med vrtenjem v nekaj, kar je 40 00:02:16,630 --> 00:02:19,590 pravilno in kaj storiti da je dobro opravljeno. 41 00:02:19,590 --> 00:02:22,920 Večina ljudi, ki so delali fantastično v smislu pravilnosti - 42 00:02:22,920 --> 00:02:25,460 5 je ali 4-je na vseh psets. 43 00:02:25,460 --> 00:02:27,930 Večina ljudi so dobili tiste, ves čas. 44 00:02:27,930 --> 00:02:31,150 >> Vendar samo zato, ker ste naredili Nekaj ​​pravica ne pomeni, da ste 45 00:02:31,150 --> 00:02:34,450 naredil nekaj tako elegantno, ali učinkovito, ali kot spreten kot vi 46 00:02:34,450 --> 00:02:35,270 Lahko bi to storil. 47 00:02:35,270 --> 00:02:36,790 In to je tisto, oblikovanje - 48 00:02:36,790 --> 00:02:39,230 in v manjšem obsegu, stil - 49 00:02:39,230 --> 00:02:40,450 osi so za. 50 00:02:40,450 --> 00:02:45,130 Torej, jaz sem vas vse potiskanje in druge TFS potiskajo fantje, da ne samo posledično 51 00:02:45,130 --> 00:02:48,320 V stvari, ki so pravilne, vendar se izkažejo v stvari, ki so kodirani dobro. 52 00:02:48,320 --> 00:02:53,060 >> Ne delaš nepotrebne ZA zank, Ne preračunu spremenljivk če je 53 00:02:53,060 --> 00:02:53,800 vam ni treba. 54 00:02:53,800 --> 00:02:58,520 Na primer, če se ozremo na problem nastaviti 4, ko je dajanje opeke na 55 00:02:58,520 --> 00:03:03,070 zaslon, vsaka vrstica - vsak opeke dani vrsti je enaka Y-koordinata - 56 00:03:03,070 --> 00:03:04,390 usklajuje isti višini. 57 00:03:04,390 --> 00:03:07,930 >> Tako da je Y-koordinata ni potrebno se izračuna v notranjosti notranjosti 58 00:03:07,930 --> 00:03:11,070 ugnezdene zanke for, da ste verjetno, ki se uporablja , da te opeke na zaslonu. 59 00:03:11,070 --> 00:03:14,030 Potrebuje samo izračuna vsak ko boste preklopili vrstico, ali 60 00:03:14,030 --> 00:03:15,200 pomakne navzdol vrstico. 61 00:03:15,200 --> 00:03:19,760 Tako pravijo, če obstajajo 10 opeke v vrstica, lahko vsaka opeka, enake 62 00:03:19,760 --> 00:03:22,260 y-koordinata, in da je Y-koordinata se prav lahko izračuna 63 00:03:22,260 --> 00:03:23,550 enkrat za vse,. 64 00:03:23,550 --> 00:03:27,810 >> To ni potrebno, da se izračuna 10 krat, prav tako pa, da je treba za izračun 65 00:03:27,810 --> 00:03:30,220 bi se zgodilo v dejanski klic funkcije - 66 00:03:30,220 --> 00:03:33,020 Novi gracked klic funkcije. 67 00:03:33,020 --> 00:03:37,820 Torej, če bi bil malo zmedeno za ste, bolj na splošno, stvari, ki jih 68 00:03:37,820 --> 00:03:40,730 Ne potrebujem, da se zgodi vsak čas greš skozi zanko ne bi smelo biti 69 00:03:40,730 --> 00:03:42,900 pa je v zanko, in ne bi smeli se zgodi vsakič, ko greš 70 00:03:42,900 --> 00:03:44,080 skozi zanko. 71 00:03:44,080 --> 00:03:49,270 >> Še en dober dizajn primer smo videli v 3 tednih za 15, lahko vodi 72 00:03:49,270 --> 00:03:50,500 progi ničle. 73 00:03:50,500 --> 00:03:53,600 Torej, ko ste inicializacijo desko, vas Prihranite - v globalne spremenljivke, morda - 74 00:03:53,600 --> 00:03:56,140 X in Y-koordinata nič. 75 00:03:56,140 --> 00:03:57,520 In potem, ko ste - 76 00:03:57,520 --> 00:04:00,310 V vašem premakniti funkcijo, ko naredite uspešna poteza, morate posodobiti 77 00:04:00,310 --> 00:04:02,040 lokacijo nič. 78 00:04:02,040 --> 00:04:06,240 >> Da bi vas rešim iz da bi morali narediti ugnezdene ZA zank odmisliti 79 00:04:06,240 --> 00:04:10,700 vkrcati vsakič v vašem premakniti funkcijo in našli nič, ali najti ploščice, 80 00:04:10,700 --> 00:04:12,460 in nato preverite, kaj je pričakovati zanj. 81 00:04:12,460 --> 00:04:16,329 Namesto tega imate lokacijo nič, lahko samo poglej zgoraj, spodaj, 82 00:04:16,329 --> 00:04:21,160 in levo in desno od tega, da bi našli ploščice, kar ste iskali. 83 00:04:21,160 --> 00:04:24,970 >> Tako v smislu programov smo pisno, oni nikoli dovolj velik 84 00:04:24,970 --> 00:04:28,580 da so nekateri od teh konstrukcijskih odločitev se res dogaja, da ovirajo vašo 85 00:04:28,580 --> 00:04:31,670 Program, ali bi bilo teči bolj počasi, ali morda celo zmanjkalo pomnilnika. 86 00:04:31,670 --> 00:04:35,030 Vendar smo še vedno vam kljukce pisati kot elegantno in 87 00:04:35,030 --> 00:04:36,450 učinkovito kodo, kot je mogoče. 88 00:04:36,450 --> 00:04:39,910 >> Torej, če vam na koncu pisati stvari da imajo bistveno večji 89 00:04:39,910 --> 00:04:44,660 področje, bodo napisana z dobro oblikovati poleg tega, da pravilno. 90 00:04:44,660 --> 00:04:46,300 Torej število imate prinesel ven. 91 00:04:46,300 --> 00:04:48,560 To je nekaj, kar smo iskali - nekaj, kar bomo še naprej 92 00:04:48,560 --> 00:04:49,840 pritisneš fante. 93 00:04:49,840 --> 00:04:52,460 >> Če ste kdaj koli vprašanja o oblikovanje vašega programa, vas prosimo, 94 00:04:52,460 --> 00:04:56,870 da bi dosegla za mano, in sem vesel, da sprehod skozi svoj program z vami, 95 00:04:56,870 --> 00:05:01,320 in poudariti nekatere zasnove odločitve, ki ste jih opravili, in vam nekaj 96 00:05:01,320 --> 00:05:06,240 predloge o tem, kako narediti še boljše odločitve oblikovanje. 97 00:05:06,240 --> 00:05:08,870 >> Torej bomo naprej da govorimo o Kviz 0. 98 00:05:08,870 --> 00:05:11,300 Preden bomo to storili, ne kdo Za vsa vprašanja o tem, kaj 99 00:05:11,300 --> 00:05:14,252 Do sedaj sem pokriti? 100 00:05:14,252 --> 00:05:21,500 >> [Šelestenje NOISE] 101 00:05:21,500 --> 00:05:22,750 >> JASON Hirschhorna: Sedem sekund. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Spregovorimo o Kviz 0 za bit. 104 00:05:24,970 --> 00:05:26,700 Večina od vas ima svoj kviz 0 hrbtu. 105 00:05:26,700 --> 00:05:29,820 Če tega ne storite, upajmo se spomnite malo. 106 00:05:29,820 --> 00:05:34,770 Ampak, če ste vzeli kviz 0, potem imajo tudi dostop do PDF na spletu v 107 00:05:34,770 --> 00:05:35,890 rešitve vzorca. 108 00:05:35,890 --> 00:05:39,480 >> Ima kdo dodatna vprašanja, skočimo v gradivih teden o 109 00:05:39,480 --> 00:05:41,520 Poseben problem na kvizu 0 - 110 00:05:41,520 --> 00:05:44,630 Zato je odgovor, kaj je to? 111 00:05:44,630 --> 00:05:47,255 Je kdo zmeden o čemerkoli? 112 00:05:47,255 --> 00:05:50,230 Tudi če imaš problem v redu, ampak samo bi rad, da mu razloži malo 113 00:05:50,230 --> 00:05:52,640 Še več, vesel sem, da to storite zdaj. 114 00:05:52,640 --> 00:05:57,800 >> Zato sem prosil, da vi tudi pridejo pripravljeni z nekaterimi 115 00:05:57,800 --> 00:05:59,440 misli o Kviz 0. 116 00:05:59,440 --> 00:06:02,660 Torej, ki bi radi, da nam se je začel z vprašanjem, ali 117 00:06:02,660 --> 00:06:04,655 pripombe o Kviz 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [KNJIGA šelestenje] 120 00:06:10,410 --> 00:06:11,470 >> JASON Hirschhorna: Ne vsi naredil odlično. 121 00:06:11,470 --> 00:06:12,720 Tako da vem [smeh] 122 00:06:12,720 --> 00:06:15,950 da morajo biti nekatera vprašanja O Kviz 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 Da. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: Number 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON Hirschhorna: Število 10. 129 00:06:33,560 --> 00:06:35,400 Katera je bila številka 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: - 131 00:06:35,840 --> 00:06:36,420 >> JASON Hirschhorna: I Se nisem - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: vključuje - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON Hirschhorna: Število 10 je bilo osem I - pisno osem na i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Ja. 136 00:06:42,980 --> 00:06:43,630 >> JASON Hirschhorna: OK. 137 00:06:43,630 --> 00:06:47,390 Torej, še eno vprašanje, bi lahko imeli vprašal sem bil resnično daljnoviden? 138 00:06:47,390 --> 00:06:48,630 Odgovor je pritrdilen. 139 00:06:48,630 --> 00:06:52,060 V odseku pred kviz, sem vprašal vidva z Zakonikom tako Sterling in 140 00:06:52,060 --> 00:06:52,980 osem na i. 141 00:06:52,980 --> 00:06:54,770 Oba se je zgodilo pojavijo na kvizu. 142 00:06:54,770 --> 00:06:57,510 Torej, upam, da ste ga plačali pozornost na to. 143 00:06:57,510 --> 00:07:02,520 >> In če si imel, potem bi morali verjetno storil tudi na teh dveh. 144 00:07:02,520 --> 00:07:06,030 Ampak osem do i, smo dejansko ni koda je v razredu, vendar je bilo spet 145 00:07:06,030 --> 00:07:07,500 vprašal na kvizu. 146 00:07:07,500 --> 00:07:13,270 Torej nekaj stvari, da sprejmejo Upoštevajte, ko kodiranje osem na i. 147 00:07:13,270 --> 00:07:17,320 Prva stvar, na vprašanje, je bilo , ki ga je potrebno preveriti, če niz 148 00:07:17,320 --> 00:07:20,300 je bila enaka null. 149 00:07:20,300 --> 00:07:28,060 >> Nekaj ​​ljudje poskušali preveriti kasneje V programu sem bil, če je nosilec - 150 00:07:28,060 --> 00:07:30,940 tako poseben značaj, da Niz - je bila enaka null. 151 00:07:30,940 --> 00:07:35,600 Vendar ne pozabite, da je v bistvu null - je dobro razmišljati o 152 00:07:35,600 --> 00:07:39,100 null, kot ničelni kazalec - kazalec na ničlo - 153 00:07:39,100 --> 00:07:40,920 nekje v spominu, kjer nikoli ne morejo dostopati. 154 00:07:40,920 --> 00:07:44,730 >> Torej, če je nekaj enako null, si vem, da ni bil inicializiran, 155 00:07:44,730 --> 00:07:46,430 ali pa ni ničesar. 156 00:07:46,430 --> 00:07:50,950 Tako je s char zvezda, S Nosilec i je znak. 157 00:07:50,950 --> 00:07:57,410 Zato je smiselno, da s primerjati z null, vendar ne s nosilec i na nič. 158 00:07:57,410 --> 00:07:59,390 Ampak še enkrat - tako, da je prva stvar, ki da si moral storiti - 159 00:07:59,390 --> 00:08:03,510 preverite, da ste dejansko imaš pravo niz. 160 00:08:03,510 --> 00:08:08,020 >> Naprej, boste želeli, da gredo skozi vsak znak v nizu. 161 00:08:08,020 --> 00:08:12,500 In zato, da bi se kot nosilcem S i, na primer, če sem vaš iterator. 162 00:08:12,500 --> 00:08:17,250 In da ta znak, in se njegova dejanska vrednost. 163 00:08:17,250 --> 00:08:21,800 Ste ga shrani kot char, ampak ASCII vrednost za nič - 164 00:08:21,800 --> 00:08:23,010 nič kot znak - 165 00:08:23,010 --> 00:08:25,450 dejansko ni celo število nič. 166 00:08:25,450 --> 00:08:28,700 Je kakšno drugo številko, ki jo lahko pogledate v tabeli ASCII. 167 00:08:28,700 --> 00:08:30,790 >> Torej, eden od načinov za korekcijo, ki - verjetno najboljši način za korekcijo 168 00:08:30,790 --> 00:08:33,760 da - se odšteje od njega vrednost značaj - 169 00:08:33,760 --> 00:08:35,140 nič kot znak. 170 00:08:35,140 --> 00:08:38,490 Torej minus enojni narekovaj, nič, drugo enojni narekovaj. 171 00:08:38,490 --> 00:08:44,620 Da bo ne glede na število, ki ga imajo kot char, in dobil je enaka 172 00:08:44,620 --> 00:08:46,720 številko, kot je dejansko število. 173 00:08:46,720 --> 00:08:50,300 >> In da je zelo podobna metodi Veliko ljudi se je v 174 00:08:50,300 --> 00:08:52,800 Problem nastavite 2, s Cezarjem in Viginere - 175 00:08:52,800 --> 00:08:55,160 te šifre, ko smo jih vrtijo. 176 00:08:55,160 --> 00:08:59,210 Torej, ko ga imate kot število iz nič do devet, nato - odvisno 177 00:08:59,210 --> 00:09:02,750 kam gre v končni številko - morate, da jo pomnožimo 178 00:09:02,750 --> 00:09:04,120 z močjo 10. 179 00:09:04,120 --> 00:09:07,340 >> Nekateri ljudje preselili od zadaj za spredaj, in pomnoženo posameznika 180 00:09:07,340 --> 00:09:08,940 Številka z močjo 10. 181 00:09:08,940 --> 00:09:11,160 Nekateri ljudje preselili iz naprej-nazaj - 182 00:09:11,160 --> 00:09:14,430 in tako je največja zaporedne številke Prvi - 183 00:09:14,430 --> 00:09:18,190 in bi razen tistih iz globalna spremenljivka števec. 184 00:09:18,190 --> 00:09:20,880 In nato vsakič, skozi FOR zanke, pomnožite velikan globalno 185 00:09:20,880 --> 00:09:25,640 spremenljivko števec z 10, da bi prostor za naslednjo char. 186 00:09:25,640 --> 00:09:28,750 >> Tako da je malo zmedeno, brez me je pisanje na tablo. 187 00:09:28,750 --> 00:09:31,550 Ampak raztopina vzorca vam je na voljo. 188 00:09:31,550 --> 00:09:32,870 Vendar so bile to velike stvari smo iskali. 189 00:09:32,870 --> 00:09:36,400 Prav tako preverite, da je vsak individualna narava je bila res 190 00:09:36,400 --> 00:09:39,780 lik med nič in devet in ne kakšen drug znak, kot A, 191 00:09:39,780 --> 00:09:41,160 npr. 192 00:09:41,160 --> 00:09:43,150 >> Tisti, ki so bile stvari, ki smo jih iskali s tem vprašanjem. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Ne da odgovoriti na vaše vprašanje? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Ja. 196 00:09:49,320 --> 00:09:50,240 >> JASON Hirschhorna: OK. 197 00:09:50,240 --> 00:09:53,940 Ali obstajajo druga vprašanja O Kviz 0? 198 00:09:53,940 --> 00:09:55,440 Kaj pa zbiranje? 199 00:09:55,440 --> 00:09:56,740 Vsi sestavljanje kajne? 200 00:09:56,740 --> 00:09:58,370 Ne 201 00:09:58,370 --> 00:09:58,840 Bilo - 202 00:09:58,840 --> 00:10:01,010 [Smeh] 203 00:10:01,010 --> 00:10:03,265 Imate vprašanja Kompilacija 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 >> [KNJIGA šelestenje] 207 00:10:11,090 --> 00:10:11,520 >> JASON Hirschhorna: Da. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: Je številka 7 - naključno? 210 00:10:14,140 --> 00:10:16,500 >> JASON Hirschhorna: Število 7. 211 00:10:16,500 --> 00:10:20,670 Številka 7 je dobil naključno celo število. 212 00:10:20,670 --> 00:10:21,110 Odlično. 213 00:10:21,110 --> 00:10:25,630 Torej boš dal celih števil a in število b, in želite naključno 214 00:10:25,630 --> 00:10:28,710 celo število med A in B. 215 00:10:28,710 --> 00:10:31,740 Mi lahko dejansko napisati tole o board, ker je to eden 216 00:10:31,740 --> 00:10:33,320 je bila ena vrstica kode - 217 00:10:33,320 --> 00:10:34,390 eden od načinov, da to storite. 218 00:10:34,390 --> 00:10:37,810 >> Tako da smo glede drand kot funkcijo lahko uporabimo. 219 00:10:37,810 --> 00:10:38,820 In kaj drand - 220 00:10:38,820 --> 00:10:40,290 ob predpostavki, da so se nasadijo - 221 00:10:40,290 --> 00:10:42,316 kaj drand vrne? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: float med 0,0 in 1,0. 223 00:10:44,840 --> 00:10:45,530 >> JASON Hirschhorna: številka - ja. 224 00:10:45,530 --> 00:10:47,910 Število med 0 in 1. 225 00:10:47,910 --> 00:10:51,760 In tako smo B in. 226 00:10:51,760 --> 00:10:55,480 In potem imamo naključno številko med 0 in 1, ki nam jih drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Nekateri ljudje poskušali dati B ali b minus ali nekaj v tistih, 229 00:11:06,630 --> 00:11:07,960 oklepaje. 230 00:11:07,960 --> 00:11:11,210 To bi pomenilo, da so si Argumenti za to funkcijo. 231 00:11:11,210 --> 00:11:13,450 >> drand ne sprejme nobenih argumentov - kot getString ne 232 00:11:13,450 --> 00:11:14,330 Ne jemljite nobenih argumentov. 233 00:11:14,330 --> 00:11:16,600 Torej je le odprta paren, blizu paren - in to sama, je 234 00:11:16,600 --> 00:11:17,330 klic funkcije. 235 00:11:17,330 --> 00:11:19,770 In to vam daje več med 0 in 1. 236 00:11:19,770 --> 00:11:22,820 Seveda pa imamo celo vrsto da je lahko število podati 237 00:11:22,820 --> 00:11:28,470 >> Reči, če je B 10 in 5, res želite več z razponom od 5 let. 238 00:11:28,470 --> 00:11:36,940 Torej naslednja stvar, ki jo morate storiti je, pomnožite to ga je razpon b manj a. 239 00:11:36,940 --> 00:11:40,380 Torej, ob predpostavki, da se pomnoži. 240 00:11:40,380 --> 00:11:42,590 In da nam bo dal več v določenem območju. 241 00:11:42,590 --> 00:11:46,610 In da je specifična čemer je območje Razlika med b manj a. 242 00:11:46,610 --> 00:11:50,030 >> In končno, da ga bom samo od - pravijo območje med b minus 243 00:11:50,030 --> 00:11:52,520 je 5, ki bo nam dal število od 0 do 5. 244 00:11:52,520 --> 00:11:56,000 Ampak, če je v resnici 5, moramo povečati to območje do kje je 245 00:11:56,000 --> 00:12:01,380 dejansko naj bi se z dodajanjem. 246 00:12:01,380 --> 00:12:02,580 Tako da dobi logični pravico. 247 00:12:02,580 --> 00:12:03,745 In potem, bi morali eno vprašanje? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: Ne 249 00:12:04,547 --> 00:12:06,010 Počutim se prav zdaj res neumno. 250 00:12:06,010 --> 00:12:06,405 [Smeh] 251 00:12:06,405 --> 00:12:06,730 >> JASON Hirschhorna: Ne 252 00:12:06,730 --> 00:12:08,640 Ne počutim res neumno. 253 00:12:08,640 --> 00:12:10,560 Število ljudi, ki si prizadevale s tem vprašanjem. 254 00:12:10,560 --> 00:12:13,920 In potem, drugo vprašanje je, drand, ste rekli, vam plovec - 255 00:12:13,920 --> 00:12:14,940 vrne float. 256 00:12:14,940 --> 00:12:18,020 Toda ta funkcija dejansko vprašal , da se celo vrne. 257 00:12:18,020 --> 00:12:23,700 >> Vam ni treba, da odda to izrecno na celo število, ker ti 258 00:12:23,700 --> 00:12:29,090 Operacije jo bo obravnavala kot vse a float - kot število s plavajočo vejico. 259 00:12:29,090 --> 00:12:31,570 Kot je ta bo - tudi če je to je celo število, bo to 260 00:12:31,570 --> 00:12:32,890 pravilno pomnoži. 261 00:12:32,890 --> 00:12:34,000 Vse množenje bo delovala. 262 00:12:34,000 --> 00:12:35,060 Vam ni treba, da ga odda tukaj. 263 00:12:35,060 --> 00:12:36,480 Dejstvo je, da ga ne bi smeli vzeti. 264 00:12:36,480 --> 00:12:37,310 >> Da bi - 265 00:12:37,310 --> 00:12:40,750 če bi odda več , ki je med 0 in 1 - 266 00:12:40,750 --> 00:12:42,680 naključno številko, s plavajočo vejico - 267 00:12:42,680 --> 00:12:47,850 potem bo bodisi samo 0 ali 1, tako boste izgubili vse te natančnosti. 268 00:12:47,850 --> 00:12:50,120 Toda na koncu, ko se vrnete, samodejno dobi 269 00:12:50,120 --> 00:12:51,620 poslati nazaj kot celo število. 270 00:12:51,620 --> 00:12:56,870 Torej vam ni treba storiti da vlivanje sami. 271 00:12:56,870 --> 00:13:00,810 >> Torej je bil to odgovor na da je vprašanje, številka 7. 272 00:13:00,810 --> 00:13:02,190 Katera koli druga vprašanja o Kviz 0? 273 00:13:02,190 --> 00:13:03,300 Ja, Annie. 274 00:13:03,300 --> 00:13:05,050 >> Annie: Kdaj bomo uporabili rekurzivno - 275 00:13:05,050 --> 00:13:07,850 Kdaj bomo uporabili iterativne zanke? 276 00:13:07,850 --> 00:13:10,210 >> JASON Hirschhorna: Kdaj uporabiti rekurzivna - tako bolj na splošno, 277 00:13:10,210 --> 00:13:14,110 prednosti in slabosti v primerjavi z rekurzija iterativni pristop. 278 00:13:14,110 --> 00:13:17,110 Ali lahko kdo ponudi pro ali con? 279 00:13:17,110 --> 00:13:19,460 Prosim? 280 00:13:19,460 --> 00:13:20,140 Ne more vsakdo. 281 00:13:20,140 --> 00:13:22,526 Kdo vam lahko ponudi pro ali con? 282 00:13:22,526 --> 00:13:26,963 >> [KNJIGA šelestenje] 283 00:13:26,963 --> 00:13:29,730 >> ŠTUDENTSKI 1: Rekurzivno je manj kodiranje - manj tipkanje? 284 00:13:29,730 --> 00:13:33,170 >> JASON Hirschhorna: Torej na splošno, rekurzija predvsem, funkcija - 285 00:13:33,170 --> 00:13:35,750 ali algoritem, kot spajanje sort -, ki je zelo primerna 286 00:13:35,750 --> 00:13:37,300 na rekurziven pristop - 287 00:13:37,300 --> 00:13:40,710 bi bilo bolj enostavno, da rekurzivno kodo. 288 00:13:40,710 --> 00:13:43,940 In samo bolj smiselno to storiti rekurzivno. 289 00:13:43,940 --> 00:13:46,230 Zato, da bi Pro rekurzijska. 290 00:13:46,230 --> 00:13:46,610 Drugi? 291 00:13:46,610 --> 00:13:47,467 Ja? 292 00:13:47,467 --> 00:13:49,240 >> ŠTUDENTSKI 2: Con do rekurzije - 293 00:13:49,240 --> 00:13:50,940 Ki jih uporablja več pomnilnika. 294 00:13:50,940 --> 00:13:52,200 >> JASON Hirschhorna: Torej, ravno prav. 295 00:13:52,200 --> 00:13:55,720 Rekurzivna funkcija bo vztrajati seštevanje Sveženj okvirji za dimnika. 296 00:13:55,720 --> 00:13:59,690 Torej, če ste delujejo na veliko številk, in so za to imenujemo 297 00:13:59,690 --> 00:14:02,560 deluje veliko, potem boste zagotovo zasedejo več pomnilnika, medtem 298 00:14:02,560 --> 00:14:05,810 iterativni pristop bo dal le eno kup okvir na sklad, ker 299 00:14:05,810 --> 00:14:08,420 vse se zgodi v enem funkcijo. 300 00:14:08,420 --> 00:14:11,010 >> Kakršne koli druge prednosti in slabosti? 301 00:14:11,010 --> 00:14:11,500 Ja. 302 00:14:11,500 --> 00:14:12,550 >> ŠTUDENTSKI 3: Pros za rekurzije. 303 00:14:12,550 --> 00:14:15,950 Vam ni treba določiti v napredovanje kolikokrat 304 00:14:15,950 --> 00:14:17,660 je bilo treba ponoviti kode. 305 00:14:17,660 --> 00:14:22,810 Lahko imajo vnaprej določeno število časi, ki jih imajo za ponovitev, nato 306 00:14:22,810 --> 00:14:26,420 rekurzija je bolje, ker je potrebno ta rezultat. 307 00:14:26,420 --> 00:14:27,780 >> JASON Hirschhorna: Mislim, da je to res. 308 00:14:27,780 --> 00:14:30,770 Ampak mislim, da je v obeh primerih Nikoli ne bi - 309 00:14:30,770 --> 00:14:33,290 bi verjetno dobili nekaj vhod od uporabnika. 310 00:14:33,290 --> 00:14:35,990 Ali bi to funkcijo imajo nekaj vhod da bi določili, koliko krat 311 00:14:35,990 --> 00:14:36,730 mora teči. 312 00:14:36,730 --> 00:14:39,520 Torej na splošno, ne bi trdi kode - celo v interaktivnega pristopa - kako 313 00:14:39,520 --> 00:14:40,940 tolikokrat, da se zanka je treba izvesti. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Ali imate še ti so bili razmišljal, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Torej tistih, ki so verjetno dva - 318 00:14:51,650 --> 00:14:54,370 Največji pro in največji con na rekurzivni proti 319 00:14:54,370 --> 00:14:57,080 iterativni pristop. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Karkoli drugega na kvizu 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Gremo naprej. 324 00:15:09,920 --> 00:15:15,260 Datoteka I / O. Obstaja čudovit kratek ta teden na datoteko I / O, da, upajmo 325 00:15:15,260 --> 00:15:19,270 ste si ogledali mnogokratnik krat, in občudovali. 326 00:15:19,270 --> 00:15:22,910 Veliko dela je šel v to, in sem Slišal je noro koristno. 327 00:15:22,910 --> 00:15:25,740 Jaz tudi povezavo na ta diapozitiv, V primeru, da niste imeli 328 00:15:25,740 --> 00:15:29,160 priložnost, da jo gledajo 10-krat. 329 00:15:29,160 --> 00:15:35,280 >> Torej, bomo na kratko šel čez pomembni koraki v smeri odpiranja in delo 330 00:15:35,280 --> 00:15:38,400 z datotekami, potem pa se bomo potopite v problem kodiranja, preden 331 00:15:38,400 --> 00:15:40,400 preučuje problem niz. 332 00:15:40,400 --> 00:15:44,330 Torej, še enkrat, bom to dal gor na zaslon, vendar bom govoril za 333 00:15:44,330 --> 00:15:47,630 Samo minuto o tem, kaj smo počneš tukaj z datoteko I/O-- 334 00:15:47,630 --> 00:15:49,090 Kaj to pomeni? 335 00:15:49,090 --> 00:15:55,280 >> To pomeni, da lahko ustvarimo naše Programi, nato pa so naše programe 336 00:15:55,280 --> 00:16:00,370 izstopa, in ne bi na kakršen koli vpliv na svet zunaj našega programa. 337 00:16:00,370 --> 00:16:04,630 Toda, ko smo začeli delati z datotekami - tako jim branje in za ustvarjanje 338 00:16:04,630 --> 00:16:10,460 njih - lahko imamo nekaj vpliva na svet zunaj našega programa. 339 00:16:10,460 --> 00:16:15,440 >> Tako kot če Microsoft Word ni mogel da bi vse Wordovih dokumentov, nato pa 340 00:16:15,440 --> 00:16:18,710 ko Microsoft Word nehal, vse vaše delo naj bi šla, in bi bilo 341 00:16:18,710 --> 00:16:19,740 res je neuporabna. 342 00:16:19,740 --> 00:16:23,620 Nam na koncu želeli, da bi lahko pisanje programov, ki lahko vplivajo 343 00:16:23,620 --> 00:16:31,350 svet okoli njih, tako z vključevanjem v kompleksnih vhodi - v smislu datotek in 344 00:16:31,350 --> 00:16:37,080 prek datotek, in tudi ustvariti zanimivo in prepričljivi rezultati - 345 00:16:37,080 --> 00:16:39,520 v smislu različnih vrst datotek. 346 00:16:39,520 --> 00:16:43,730 >> Tako, da je razlog, zakaj smo začeli naučiti, kako delati z datotekami. 347 00:16:43,730 --> 00:16:47,080 Natančneje, kaj moramo storiti, je, kot sledi. 348 00:16:47,080 --> 00:16:47,680 To je zelo preprosto. 349 00:16:47,680 --> 00:16:51,530 Obstaja le nekaj korakov, ter Tukaj so navedeni na tem zakoniku. 350 00:16:51,530 --> 00:16:55,130 Tako da smo šli skozi to kodo po vrsticah. 351 00:16:55,130 --> 00:16:57,630 >> Najprej boste videli poudarjeno - 352 00:16:57,630 --> 00:17:01,330 ko delate z datoteko, ne glede na vrsto spisu je, 353 00:17:01,330 --> 00:17:02,670 ga morate odpreti. 354 00:17:02,670 --> 00:17:05,130 In da je s pozivom, naj fopen - 355 00:17:05,130 --> 00:17:05,950 tukaj. 356 00:17:05,950 --> 00:17:07,980 Ti vključujejo ime datoteke. 357 00:17:07,980 --> 00:17:11,930 Če datoteka ni v vašem telefonskem imeniku, ali mapa, v kateri je ta program 358 00:17:11,930 --> 00:17:15,910 življenje, potem boste morali vključiti Pot, kjer je ta datoteka. 359 00:17:15,910 --> 00:17:19,099 >> Bomo Predvidevam, da je to datoteka z imenom "text.txt" - 360 00:17:19,099 --> 00:17:24,220 enostavno besedilo dokumenta - je v isto mapo kot tega programa. 361 00:17:24,220 --> 00:17:26,859 Torej, to je že druga stvar, da v um - da, če želite odpreti datoteko 362 00:17:26,859 --> 00:17:30,050 nekje drugje, boste dejansko potrebujejo vključiti njeno lokacijo. 363 00:17:30,050 --> 00:17:33,520 >> Drugič, lahko prenese argument, s katerim fopen, in to je tisto, kar želite storiti 364 00:17:33,520 --> 00:17:34,620 z datoteko. 365 00:17:34,620 --> 00:17:38,450 Obstajajo tri glavne argumente, ki boš preide fopen. 366 00:17:38,450 --> 00:17:40,060 Kdo lahko mi ti trije? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Kdo mi lahko pove eden izmed njih? 369 00:17:47,130 --> 00:17:48,130 Da. 370 00:17:48,130 --> 00:17:50,010 >> ŠTUDENTSKI 4: ime datoteke? 371 00:17:50,010 --> 00:17:50,440 >> JASON Hirschhorna: Žal mi je. 372 00:17:50,440 --> 00:17:55,490 Trije glavni argumenti, ki jih lahko prestanejo kot drugi argument za fopen. 373 00:17:55,490 --> 00:17:57,060 Imaš prav - ime datoteke je prvi argument. 374 00:17:57,060 --> 00:18:01,620 Vendar je drugi argument, da so fopen splošno tri strune in - ja. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: za dodati. 377 00:18:03,490 --> 00:18:06,840 >> JASON Hirschhorna: če želite, da dodajte v datoteko, ki že obstaja. 378 00:18:06,840 --> 00:18:07,810 >> ŠTUDENTSKI 5: R za branje. 379 00:18:07,810 --> 00:18:09,930 >> JASON Hirschhorna: R, če želijo brati iz datoteke. 380 00:18:09,930 --> 00:18:10,670 >> ŠTUDENTSKI 6: W za napisati. 381 00:18:10,670 --> 00:18:12,840 >> JASON Hirschhorna: In w, če ste želim pisati v datoteko. 382 00:18:12,840 --> 00:18:17,570 Torej, v tem primeru, smo pisno na datoteko, tako da imamo w. 383 00:18:17,570 --> 00:18:22,360 Lahko ga odprete, imate tudi za shranjevanje datoteko nekje, in da je s 384 00:18:22,360 --> 00:18:26,000 oznaka na levi strani Operater naloga - 385 00:18:26,000 --> 00:18:31,220 Jaz sem ustvarjanju kazalec na datoteko imenujemo, v tem primeru spis. 386 00:18:31,220 --> 00:18:36,070 >> Ne bomo skrbeti, kaj to vsi pokrovčki FILE stvar. 387 00:18:36,070 --> 00:18:40,600 Dovolj je reči, da je dolg tok ničel in enic. 388 00:18:40,600 --> 00:18:44,970 In to je, kako bomo to deluje in jo razumeti. 389 00:18:44,970 --> 00:18:47,300 >> Naslednja stvar, ki jo morate storiti - in To je izredno pomembno - 390 00:18:47,300 --> 00:18:49,070 vsakič, ko odprete datoteko - 391 00:18:49,070 --> 00:18:54,250 v resnici, ko boste klic malloc, za Na primer, in dobili nekaj pomnilnika in poskusite 392 00:18:54,250 --> 00:18:57,980 in ga shranite v kazalec, vedno želeli preveriti, da se prepričajte, da je ta 393 00:18:57,980 --> 00:19:00,230 Funkcija ne vrne null. 394 00:19:00,230 --> 00:19:05,230 >> Torej v tem primeru smo preverjanje, da prepričani, da smo dejansko odprli 395 00:19:05,230 --> 00:19:10,230 vložite pravilno, in ni bilo nobena napaka v našem programu. 396 00:19:10,230 --> 00:19:15,160 Naprej, ko smo preverili, da poskrbite, da da imamo delovno datoteko, ne moremo 397 00:19:15,160 --> 00:19:18,520 pisati ali brati iz, ali priložiti k spisu. 398 00:19:18,520 --> 00:19:24,270 V tem primeru sem preprosto tiskanje ena vrstica v to datoteko. 399 00:19:24,270 --> 00:19:25,450 >> Kako naj vem? 400 00:19:25,450 --> 00:19:27,990 No, jaz sem z uporabo te funkcije imenovano ovrednotenj. 401 00:19:27,990 --> 00:19:30,970 Vse funkcije, ki jih bo s pomočjo ko pisno, ali branje iz ali 402 00:19:30,970 --> 00:19:34,950 manipulacijo datoteke bo podobno Funkcije, ki ste jih videli prej, vendar 403 00:19:34,950 --> 00:19:38,420 začnejo s črko F, stoji za datoteko. 404 00:19:38,420 --> 00:19:43,440 In ovrednotenj, za razliko od našega normalnega tiska app, traja en dodaten argument, 405 00:19:43,440 --> 00:19:47,800 in to je datoteka, kjer ste želite natisniti to linijo. 406 00:19:47,800 --> 00:19:50,640 >> Nimam ničesar, da bi Pravica ohai. 407 00:19:50,640 --> 00:19:52,860 Nimam za tretjino Trditev, da printf - 408 00:19:52,860 --> 00:19:57,030 ali drugi argument, da printf, Tretji argument ovrednotenj, ker sem 409 00:19:57,030 --> 00:19:59,480 nimajo nobene ograde tukaj. 410 00:19:59,480 --> 00:20:01,070 Jaz ne vključuje nobenih spremenljivk. 411 00:20:01,070 --> 00:20:06,070 Ampak še enkrat, fprintf in vse te datoteke Funkcije, ki delujejo z datotekami 412 00:20:06,070 --> 00:20:09,820 se običajno dogaja, da potrebujemo datoteko na katerem se delajo. 413 00:20:09,820 --> 00:20:15,960 >> Končno, zadnja pomembna stvar, da storiti je, da zaprete datoteko, tako kot 414 00:20:15,960 --> 00:20:19,530 z - kadar koli smo malloc nekaj, želimo sprostiti kaj, da ne bi mi 415 00:20:19,530 --> 00:20:22,730 imajo pomnilnika - želimo zapreti svojo datoteko. 416 00:20:22,730 --> 00:20:28,180 Če ta program zapustil, ne da bi zapiranje Datoteka, so možnosti, nič ne gre 417 00:20:28,180 --> 00:20:30,050 narobe, še posebej, če je je majhna datoteka. 418 00:20:30,050 --> 00:20:35,020 >> Ampak to je zagotovo dober stil kodiranja in prakso, da vedno zaprite datoteko 419 00:20:35,020 --> 00:20:38,050 Ko končate, da jo uporabljajo. 420 00:20:38,050 --> 00:20:43,630 Tako, da je osnov datoteko I / O. Verjetno ste že opazili, da je pred ali 421 00:20:43,630 --> 00:20:45,710 gledal v tej fantastični kratkega stika. 422 00:20:45,710 --> 00:20:48,410 Ima kdo kakšno vprašanje, preden gremo v nekaj prakse kodiranja 423 00:20:48,410 --> 00:20:51,800 Težave, o spisu I / O ali koraki sem šel čez? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [Tipkanje SOUNDS] 426 00:21:03,162 --> 00:21:04,150 >> JASON Hirschhorna: Ali vam kakšno vprašanje, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Ne 428 00:21:04,660 --> 00:21:04,740 >> JASON Hirschhorna: OK. 429 00:21:04,740 --> 00:21:06,746 Bom počakati še en sedem sekund. 430 00:21:06,746 --> 00:21:07,590 [Smeh] 431 00:21:07,590 --> 00:21:08,620 To je res dober nasvet. 432 00:21:08,620 --> 00:21:10,750 Vidva ne maram spraševati. 433 00:21:10,750 --> 00:21:11,660 To je v redu. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Torej, naša prva težava praksa je, da smo gre za podvajanje funkcijo 436 00:21:17,620 --> 00:21:22,330 Orodje ukazne vrstice, ki jih verjetno uporablja pred - kopija - 437 00:21:22,330 --> 00:21:23,500 Orodje kopija. 438 00:21:23,500 --> 00:21:28,050 Če ste tip cp in nato mimo dveh Argumenti v vašem terminalu, lahko 439 00:21:28,050 --> 00:21:28,980 kopirati datoteko. 440 00:21:28,980 --> 00:21:31,220 In to je tisto, kar bomo napisati prav zdaj. 441 00:21:31,220 --> 00:21:35,830 >> Torej še enkrat, branje off to tobogan, sem vas, da napišete program, ki traja 442 00:21:35,830 --> 00:21:38,130 dva in samo dva v ukazni vrstici Argumenti - 443 00:21:38,130 --> 00:21:40,750 vir datoteke in ciljne datoteke - 444 00:21:40,750 --> 00:21:44,590 in kopije vsebini vira datoteko v ciljno datoteko 445 00:21:44,590 --> 00:21:46,960 en bajt naenkrat. 446 00:21:46,960 --> 00:21:48,510 Tako da je veliko zahtevati. 447 00:21:48,510 --> 00:21:52,200 >> Spet dober pristop k temu je ne gredo naravnost v kodi C, vendar 448 00:21:52,200 --> 00:21:54,280 razdeliti v nekaj korakih. 449 00:21:54,280 --> 00:21:58,400 Najprej pomislite na logiki - natanko kaj vas prosim, da ne - 450 00:21:58,400 --> 00:22:00,620 in razumeti vse koraki do tega problema. 451 00:22:00,620 --> 00:22:04,410 Ne v C, samo v nekaterih psevdokoda, ali celo duševno model 452 00:22:04,410 --> 00:22:06,030 kaj se dogaja. 453 00:22:06,030 --> 00:22:10,050 >> Naprej, ko imate psevdokoda navzdol, ugotovimo, kako psevdokoda 454 00:22:10,050 --> 00:22:14,600 Karte na orodjih in stvari, ki smo jih naučili uporabljati v C. 455 00:22:14,600 --> 00:22:19,070 >> In na koncu, ko boste imeli vse, kar skupaj, lahko kodo problem. 456 00:22:19,070 --> 00:22:23,370 Traja od 5 do 10 minut dela na tem problemu. 457 00:22:23,370 --> 00:22:25,800 Jaz bom dal navodila nazaj na sekundo. 458 00:22:25,800 --> 00:22:27,990 In potem smo šli čez psevdokoda in koda 459 00:22:27,990 --> 00:22:29,230 živo kot skupina. 460 00:22:29,230 --> 00:22:31,640 >> Če imate kakršnakoli vprašanja, medtem ko ste delali na tem, vas prosimo, da dvig 461 00:22:31,640 --> 00:22:34,260 roko, in jaz bom prišel okoli in jim odgovoriti. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> ŠTUDENTSKI 7: Ali lahko potegnete kos papirja? 464 00:22:39,330 --> 00:22:41,537 >> JASON Hirschhorna: Kaj se dogaja? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [Tipkanje SOUNDS] 467 00:26:48,043 --> 00:26:48,730 >> JASON Hirschhorna: OK. 468 00:26:48,730 --> 00:26:51,710 Pojdimo nad psevdokoda prvi, in potem ti bom dal nekaj več 469 00:26:51,710 --> 00:26:52,960 minut do konca kodiranja. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Kdo bi rad, da me začnete s prvo linijo 472 00:26:58,650 --> 00:27:00,030 psevdokoda za to funkcijo? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> ŠTUDENT 8: Prepričajte se, da ti so imeli dve datoteki. 475 00:27:05,740 --> 00:27:06,990 >> JASON Hirschhorna: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 In če nismo? 478 00:27:22,990 --> 00:27:25,974 >> ŠTUDENT 8: Jaz bi vrnili 0. 479 00:27:25,974 --> 00:27:27,872 >> JASON Hirschhorna: Če se vrnemo 0? 480 00:27:27,872 --> 00:27:30,182 >> ŠTUDENT 8: Vrnitev - 481 00:27:30,182 --> 00:27:30,650 slepimi. 482 00:27:30,650 --> 00:27:30,850 Žal mi je. 483 00:27:30,850 --> 00:27:31,210 >> JASON Hirschhorna: Ja. 484 00:27:31,210 --> 00:27:32,710 Verjetno ne 0. 485 00:27:32,710 --> 00:27:34,680 Ker 0 pomeni, da je vse v redu. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Tako da je prva vrstica od psevdokoda. 488 00:27:36,730 --> 00:27:38,715 Kdo ima drugo linijo psevdokoda? 489 00:27:38,715 --> 00:27:40,630 >> ŠTUDENTSKI 9: Odprti sta obe datoteke? 490 00:27:40,630 --> 00:27:41,880 >> JASON Hirschhorna: Odprite obe datoteki. 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: Preverite če je datoteka NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON Hirschhorna: Preverite, Prepričajte se ne NULL. 496 00:28:12,580 --> 00:28:15,800 Kot prahi - 497 00:28:15,800 --> 00:28:17,540 slash 0 - 498 00:28:17,540 --> 00:28:18,887 je, da NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: Ne 500 00:28:20,080 --> 00:28:21,190 >> JASON Hirschhorna: To ni nič. 501 00:28:21,190 --> 00:28:23,400 To se imenuje NULL terminator. 502 00:28:23,400 --> 00:28:25,580 To je pravzaprav napisane samo z enim l. 503 00:28:25,580 --> 00:28:28,580 Tako preverjanje kaj proti, da - to je dejansko znak - 504 00:28:28,580 --> 00:28:31,710 tako preverjanje nekaj proti da se ni ista kot preverja, če 505 00:28:31,710 --> 00:28:32,690 enaka NULL. 506 00:28:32,690 --> 00:28:34,100 >> In nekateri ljudje - 507 00:28:34,100 --> 00:28:36,040 na svojih kvizih in njihov problem kompleti - so dobili 508 00:28:36,040 --> 00:28:36,890 Dva od teh zmeden. 509 00:28:36,890 --> 00:28:38,830 Toda dve od teh sta dejansko različno. 510 00:28:38,830 --> 00:28:40,220 Ena konča niz - 511 00:28:40,220 --> 00:28:43,210 ena je kazalec na 0. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: Zakaj ne bi preverite poskrbite, da datoteke niso NULL 513 00:28:46,490 --> 00:28:48,670 preden jih odprete? 514 00:28:48,670 --> 00:28:54,772 >> JASON Hirschhorna: Torej open prihrani nekaj v tej datoteki. 515 00:28:54,772 --> 00:28:57,780 In če greš nazaj - 516 00:28:57,780 --> 00:28:59,520 tako da je ta linija - fopen - 517 00:28:59,520 --> 00:29:05,300 vam bo dala naslov in trgovino da je naslov v datoteki, če deluje. 518 00:29:05,300 --> 00:29:07,650 Če to ne deluje, bo shranil 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 Imam te. 522 00:29:08,500 --> 00:29:09,050 >> JASON Hirschhorna: V datoteki. 523 00:29:09,050 --> 00:29:11,990 Tako da ne more preveriti, NULL preden ste jih odprli. 524 00:29:11,990 --> 00:29:13,520 NULL pomeni nekaj, kar ni storil deluje pravilno. 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 Torej, preverite, niti ni? 528 00:29:22,590 --> 00:29:23,200 Ali ste? 529 00:29:23,200 --> 00:29:23,770 Kaj mislimo? 530 00:29:23,770 --> 00:29:24,310 Šli bomo s tem. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: Je. 532 00:29:24,520 --> 00:29:25,020 >> JASON Hirschhorna: Je? 533 00:29:25,020 --> 00:29:25,930 Prav tako je? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: Je. 535 00:29:26,350 --> 00:29:26,390 >> JASON Hirschhorna: OK. 536 00:29:26,390 --> 00:29:28,510 Zdi se mi, da so nekateri konsenz o tem. 537 00:29:28,510 --> 00:29:30,520 Niti ni NULL. 538 00:29:30,520 --> 00:29:32,250 OK, naslednji vrstici psevdokoda. 539 00:29:32,250 --> 00:29:33,600 , Ki mi je ni dal linijo? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Počakali bomo za vas. 542 00:29:38,295 --> 00:29:39,020 Ja. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: Moraš prebrati od prve datoteke? 544 00:29:40,895 --> 00:29:42,290 >> JASON Hirschhorna: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14: Ali bomo uporabili fscanf ali nekaj podobnega tej prvi spis? 546 00:29:46,240 --> 00:29:50,650 >> JASON Hirschhorna: Tako želimo prebral od prve datoteke in - 547 00:29:50,650 --> 00:29:51,900 kaj je dal, da je tukaj. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Brati iz izvorne datoteke. 550 00:30:01,880 --> 00:30:05,370 In potem, kaj bomo naredili, ko smo brati iz izvorne datoteke? 551 00:30:05,370 --> 00:30:06,620 Nekdo drug? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENT 15: Napišite v ciljna datoteka? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON Hirschhorna: Pišemo ciljna datoteka, in - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Kaj nam manjka? 558 00:30:30,030 --> 00:30:32,460 Nekdo drug, ki mi ni dal vrstica kode še - od psevdokoda. 559 00:30:32,460 --> 00:30:33,510 Ja. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16: Mogoče lahko vedno preverite ali je kaj prebrati, 561 00:30:36,540 --> 00:30:37,970 kot naslednje vrstice? 562 00:30:37,970 --> 00:30:39,550 Da so kot v naslednjo vrstico, vidim, če ta obstaja. 563 00:30:39,550 --> 00:30:40,660 >> [ELECTRONIC BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON Hirschhorna: Ups. 565 00:30:41,095 --> 00:30:43,120 To je moj dnevniški programske opreme. 566 00:30:43,120 --> 00:30:43,580 Ja? 567 00:30:43,580 --> 00:30:44,960 >> STUDENT 16: Ja. 568 00:30:44,960 --> 00:30:48,940 >> JASON Hirschhorna: Torej, da to se mi še enkrat. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT 16: Preverite, ali obstaja še naslednji stavek iz 570 00:30:51,640 --> 00:30:52,920 izvorna datoteka za branje. 571 00:30:52,920 --> 00:30:53,500 >> JASON Hirschhorna: OK. 572 00:30:53,500 --> 00:30:56,060 Torej ne bomo branje vrstic - Bral bajte tukaj - 573 00:30:56,060 --> 00:30:57,590 ampak ti si pravi. 574 00:30:57,590 --> 00:31:00,040 Želimo, da brati in pisati, dokler ne obstajajo več bajti. 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 In tako bi morali ti res zamaknjeno bit, ker oni so tam spodaj. 578 00:31:16,940 --> 00:31:17,470 Kajne? 579 00:31:17,470 --> 00:31:20,620 Do razprodaje bajtov, bomo brati iz izvorne datoteke in pisati 580 00:31:20,620 --> 00:31:22,160 v ciljni datoteki. 581 00:31:22,160 --> 00:31:24,510 >> In potem, kaj je zadnja Linija psevdokoda? 582 00:31:24,510 --> 00:31:26,380 Nekdo, ki ni dana me še nekaj. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17: Zapiranje datoteke? 585 00:31:30,260 --> 00:31:31,510 >> JASON Hirschhorna: Točno tako. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Zaprite datoteke. 588 00:31:37,450 --> 00:31:38,400 Torej je naša psevdokoda. 589 00:31:38,400 --> 00:31:41,870 Bom dal psevdokoda v gedit, in v nekaj minutah smo 590 00:31:41,870 --> 00:31:44,626 Ta kodirajo skupaj. 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 Dovolite nam, da bi začeli kot skupina. 594 00:33:58,290 --> 00:33:59,940 Nishant, imam novo datoteko. 595 00:33:59,940 --> 00:34:01,130 Pravkar sem odprla. 596 00:34:01,130 --> 00:34:01,880 Untitled Document 1. 597 00:34:01,880 --> 00:34:05,490 Kaj je prva stvar, kaj naj storim? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Vključi knjižnice? 599 00:34:07,040 --> 00:34:08,219 >> JASON Hirschhorna: OK. 600 00:34:08,219 --> 00:34:11,070 Kaj knjižnice? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: stdio.h, stdlib.h, verjamem? 602 00:34:17,570 --> 00:34:18,000 >> JASON Hirschhorna: OK. 603 00:34:18,000 --> 00:34:21,592 Kaj je stdlib za? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: Pozabil sem. 605 00:34:23,010 --> 00:34:23,219 >> JASON Hirschhorna: OK. 606 00:34:23,219 --> 00:34:24,179 Tako vključujejo stdio. 607 00:34:24,179 --> 00:34:28,630 Kaj naj storim, še preden I začeli pisati? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Napišite glavo? 609 00:34:29,710 --> 00:34:31,830 >> JASON Hirschhorna: Kako dobim obarvana? 610 00:34:31,830 --> 00:34:34,060 >> [interposing GLAS] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Kako si ga dobil v barvi? 612 00:34:35,040 --> 00:34:38,060 >> JASON Hirschhorna: Kako jaz barvnega kodiranja? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Ne vem. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Shranite. 616 00:34:39,389 --> 00:34:39,929 >> JASON Hirschhorna: Save. 617 00:34:39,929 --> 00:34:40,270 Da. 618 00:34:40,270 --> 00:34:41,760 Moral bi ga shranite kot. C. 619 00:34:41,760 --> 00:34:46,239 Tako da jo shranite na namizje kot cp.c. 620 00:34:46,239 --> 00:34:47,280 Sladko. 621 00:34:47,280 --> 00:34:51,199 In če želim, da bi dobili popoln slog točk, kaj naj jaz 622 00:34:51,199 --> 00:34:53,085 vključujejo na vrhu? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Lahko bi napisali svoje ime, ime programa, in namen 624 00:34:58,390 --> 00:34:59,640 programa, kot tudi? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON Hirschhorna: Izgleda dobro. 627 00:35:10,040 --> 00:35:10,470 Odlično. 628 00:35:10,470 --> 00:35:12,940 Torej ste nas je začelo odlično. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 bomo napisali tudi - 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 Zato mislim, da bom vse, da gredo. 634 00:35:33,520 --> 00:35:38,003 Kdo ima prvo vrstico kode za mene - ali prvih vrstic kode, ki 635 00:35:38,003 --> 00:35:41,280 bo trajalo, da izpolnjuje naša prva pripombe v psevdokoda? 636 00:35:41,280 --> 00:35:41,985 You. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: Ne bi bilo int argc, nato pa char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON Hirschhorna: Mislim, imaš prav. 639 00:35:49,490 --> 00:35:56,270 Oglejmo spremeniti, da int main, odprte paren, int argc, vejica, char * argv? 640 00:35:56,270 --> 00:35:57,150 Všeč? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18: Nosilci. 642 00:35:57,410 --> 00:35:58,260 >> JASON Hirschhorna: Nosilci. 643 00:35:58,260 --> 00:35:59,860 Oklepaj, zaklepaj, v bližini staršev. 644 00:35:59,860 --> 00:36:00,240 Popolna. 645 00:36:00,240 --> 00:36:02,160 Zdaj sem lahko argumente v ukazni vrstici. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Prepričajte se, da smo imeli na voljo dve datoteke. 648 00:36:04,250 --> 00:36:07,905 Lahko me tudi to. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: Če argc - 650 00:36:09,180 --> 00:36:11,060 ta ni enak 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON Hirschhorna: Če odprtih paren argc ni enak 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Ja, se vrnete 1 ali kaj podobnega. 653 00:36:16,970 --> 00:36:17,460 >> JASON Hirschhorna: Žal mi je. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18: Nazaj 1 ali kaj podobnega. 655 00:36:19,120 --> 00:36:20,270 >> JASON Hirschhorna: Nazaj 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Super. 658 00:36:22,970 --> 00:36:24,290 Odprite obe datoteki. 659 00:36:24,290 --> 00:36:26,160 Kdo mi lahko pomaga odpreti obe datoteki? 660 00:36:26,160 --> 00:36:28,125 , Ki mi je ni dal kodo? 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: Torej, vsi pokrovčki F-I-L-E vira zvezda. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON Hirschhorna: Grem vzeti ven samoglasnike. 666 00:36:40,920 --> 00:36:41,570 Tisti, ki so kul. 667 00:36:41,570 --> 00:36:42,716 To je kot Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18: Enako fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON Hirschhorna: Enako fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18: Odprte paren, argv, oklepaj. 671 00:36:49,870 --> 00:36:50,055 >> JASON Hirschhorna: Počakajte. 672 00:36:50,055 --> 00:36:50,240 Žal mi je. 673 00:36:50,240 --> 00:36:51,050 Odpri paren. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENT 18: Ja. 676 00:36:53,080 --> 00:36:55,110 Argv sub 1. 677 00:36:55,110 --> 00:36:55,860 >> JASON Hirschhorna: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> STUDENT 18: Ja. 679 00:36:56,140 --> 00:36:58,540 Argv oklepaj 1 - 680 00:36:58,540 --> 00:36:59,730 ja. 681 00:36:59,730 --> 00:37:06,470 In potem vejica, nato pa odprt dvojni citiram, r, dvojni narekovaj, 682 00:37:06,470 --> 00:37:08,250 tesne paren, podpičjem. 683 00:37:08,250 --> 00:37:09,450 >> JASON Hirschhorna: Sweet. 684 00:37:09,450 --> 00:37:10,950 Kaj pa drugi? 685 00:37:10,950 --> 00:37:16,030 >> STUDENT 18: Zelo podobno, ampak S-R-C, bi jo poklical D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON Hirschhorna: Oo! 687 00:37:17,060 --> 00:37:17,772 To mi je všeč. 688 00:37:17,772 --> 00:37:20,010 >> STUDENT 18: Just D-S-T. Ja. 689 00:37:20,010 --> 00:37:23,057 In potem argv, oklepaj, 2. 690 00:37:23,057 --> 00:37:23,200 Ja. 691 00:37:23,200 --> 00:37:26,720 In potem w namesto r. 692 00:37:26,720 --> 00:37:27,620 Ja. 693 00:37:27,620 --> 00:37:29,630 >> JASON Hirschhorna: Great. 694 00:37:29,630 --> 00:37:31,360 Čez par vrstic. 695 00:37:31,360 --> 00:37:34,040 Tudi, če ima kdo stvari za dodati, da linije, ki smo jih storili, vas prosimo, da 696 00:37:34,040 --> 00:37:35,690 dodali tiste, kot dobro. 697 00:37:35,690 --> 00:37:37,520 Prepričajte se, ali ni NULL. 698 00:37:37,520 --> 00:37:41,450 Kdo mi lahko pove kodo moram izpolnjuje te linije psevdokoda? 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: Če src enaka enaka NULL ali DST enaka enaka 702 00:37:58,645 --> 00:38:04,590 NULL, nato pa se vrnete - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON Hirschhorna: Kaj? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: Vrnitev 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON Hirschhorna: Vrnitev 2. 707 00:38:09,760 --> 00:38:14,400 Torej, če je odprt paren src enaka enak NULL, ali - 708 00:38:14,400 --> 00:38:15,590 karkoli da thing's - pipo? 709 00:38:15,590 --> 00:38:16,346 Cev? 710 00:38:16,346 --> 00:38:17,140 Imenovali jo bomo cevi. 711 00:38:17,140 --> 00:38:22,340 Cevi, cevi, dst enaka enaka NULL, vrnite 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Do razprodaje bajtov - 714 00:38:26,060 --> 00:38:29,820 smo nekako preskočijo ta korak od psevdokoda del, da boš tukaj. 715 00:38:29,820 --> 00:38:31,970 >> Vendar dokler ne pridemo iz bajte - Kaj to zvok všeč? 716 00:38:31,970 --> 00:38:34,680 Kakšen tip konstrukcije C - 717 00:38:34,680 --> 00:38:36,160 ampak jaz ne uporabljajo strukturo besedo, ker bomo začeli uporabljati 718 00:38:36,160 --> 00:38:37,350 da je v drugih primerih - 719 00:38:37,350 --> 00:38:39,495 vendar C orodje ne ta zvok všeč? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19: zanka. 721 00:38:39,970 --> 00:38:40,980 >> JASON Hirschhorna: zanka. 722 00:38:40,980 --> 00:38:43,060 Sliši se kot zanke. 723 00:38:43,060 --> 00:38:49,670 Torej, kdo mi lahko pove prvo vrstico kode zanke tukaj? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Lahko izberete tudi kakšno zanka hočeš, če mi daš 726 00:39:01,980 --> 00:39:03,215 ta vrstica kode. 727 00:39:03,215 --> 00:39:04,150 Obstajajo tri vrste. 728 00:39:04,150 --> 00:39:06,530 Vam izbrati. 729 00:39:06,530 --> 00:39:08,080 Jaz bi predlagal enega. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Katerega hočeš? 732 00:39:09,230 --> 00:39:09,960 >> AVI: ZA. 733 00:39:09,960 --> 00:39:11,460 >> JASON Hirschhorna: ZA. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i enaka nič. 735 00:39:15,180 --> 00:39:17,360 >> JASON Hirschhorna: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Ta del nisem prepričan o tem. 737 00:39:18,570 --> 00:39:29,080 Toda i manjša od velikosti vira zvezdic? 738 00:39:29,080 --> 00:39:31,128 Nisem prepričan. 739 00:39:31,128 --> 00:39:32,580 >> JASON Hirschhorna: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Ker želite velikost datoteke, kajne? 741 00:39:35,870 --> 00:39:41,090 >> JASON Hirschhorna: Torej, to verjetno ne bo nam velikost dejanske 742 00:39:41,090 --> 00:39:43,010 vloži v bajti. 743 00:39:43,010 --> 00:39:47,680 Torej, kaj še lahko storimo? 744 00:39:47,680 --> 00:39:48,810 Kaj je druga vrsta zanke? 745 00:39:48,810 --> 00:39:50,180 Ali bi morali vztrajati z zanko? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: Ali bi lahko naredil, medtem ko zanko? 748 00:39:57,900 --> 00:40:01,350 In potem, kaj boš naredil je, tako boste - 749 00:40:01,350 --> 00:40:03,930 ker imamo char * za datoteko. 750 00:40:03,930 --> 00:40:07,950 Torej, če bomo kar naprej se povečevanje da dokler sva našli NULL znaka na 751 00:40:07,950 --> 00:40:08,500 Konec tem? 752 00:40:08,500 --> 00:40:11,130 Ali ne, je, da ni kaj slik deluje? 753 00:40:11,130 --> 00:40:14,300 >> JASON Hirschhorna: Torej lahko hranimo povečevanje char * 754 00:40:14,300 --> 00:40:16,340 dokler ne najdemo NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20: V bistvu nadaljuj znak za znakom, dokler ne zadenemo 756 00:40:18,580 --> 00:40:21,250 Konec datoteke. 757 00:40:21,250 --> 00:40:21,600 >> JASON Hirschhorna: Da. 758 00:40:21,600 --> 00:40:22,560 Tako da je tisto, kar želimo narediti. 759 00:40:22,560 --> 00:40:24,545 Želimo ohraniti branje, značaj ga značaja, dokler ne pridemo do 760 00:40:24,545 --> 00:40:25,080 Konec datoteke. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Ja. 762 00:40:25,375 --> 00:40:25,860 Najdi - 763 00:40:25,860 --> 00:40:28,540 kaj je konec ali stop znak na koncu besedilne datoteke. 764 00:40:28,540 --> 00:40:28,620 >> JASON Hirschhorna: OK. 765 00:40:28,620 --> 00:40:30,140 Torej, ko pridemo do konca datoteke - kako vemo, da smo dosegli 766 00:40:30,140 --> 00:40:33,200 Konec datoteke? 767 00:40:33,200 --> 00:40:34,710 Če kličem - 768 00:40:34,710 --> 00:40:35,910 tako da je korak nazaj. 769 00:40:35,910 --> 00:40:37,550 Kaj je funkcija? 770 00:40:37,550 --> 00:40:39,360 Pojdimo k tej vrstici tukaj. 771 00:40:39,360 --> 00:40:40,630 Brati iz izvorne datoteke. 772 00:40:40,630 --> 00:40:41,880 Kdo mi lahko pove, da vrstico kode? 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 Hirschhorna: Fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Kaj, če želim, da se glasi, zelo Konkretno je bajt? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: Ne vem. 780 00:40:56,860 --> 00:40:57,110 >> JASON Hirschhorna: OK. 781 00:40:57,110 --> 00:40:59,380 Celo lažje kot fscanf - kaj je - 782 00:40:59,380 --> 00:41:01,890 Želim brati iz izvorne datoteke? 783 00:41:01,890 --> 00:41:03,720 Brati iz izvorne datoteke. 784 00:41:03,720 --> 00:41:04,850 Kaj je funkcija - ja. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: To je fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON Hirschhorna: fread. 787 00:41:06,070 --> 00:41:07,550 Mislim, kaj je s palico da je eden za zdaj. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Kakšno argumentov ne fread traja? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: Verjetno tip datoteke, in potem mesto v datoteki? 791 00:41:17,410 --> 00:41:19,550 >> JASON Hirschhorna: Kaj lahko vnesete tukaj da ugotovimo, kakšne vrste argumentov 792 00:41:19,550 --> 00:41:20,950 fread traja? 793 00:41:20,950 --> 00:41:23,710 >> VEČ Študenti: Man fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON Hirschhorna: Man fread in fwrite. 795 00:41:24,740 --> 00:41:25,980 Izgleda, da so družila. 796 00:41:25,980 --> 00:41:29,589 Torej fread traja, koliko argumentov? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23: Štiri. 798 00:41:30,920 --> 00:41:32,690 >> JASON Hirschhorna: Traja štiri trditve. 799 00:41:32,690 --> 00:41:41,100 To traja kazalec, velikost, in da stvar, ki je čudno, nekatere datoteke. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Oglejmo brati o tem tukaj. 802 00:41:43,990 --> 00:41:49,370 "Funkcija fread prebere n memb Elementi podatkov, vsaka velikosti bajta 803 00:41:49,370 --> 00:41:53,840 dolgo, od toka usmerjen z tok, jih shranite na lokaciji 804 00:41:53,840 --> 00:41:56,170 dana s kazalcem. " 805 00:41:56,170 --> 00:41:57,960 >> Torej štirje argumenti. 806 00:41:57,960 --> 00:42:04,510 Zakaj ne samo kopirati to, in ga prilepite tukaj. 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 Torej, kdo lahko začnete izpolnjevanje ti argumenti za mene? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Vzemite praznino. 812 00:42:17,720 --> 00:42:20,530 Dal samo src. 813 00:42:20,530 --> 00:42:23,142 Vzemite kazalec in zvezdo. 814 00:42:23,142 --> 00:42:26,102 Put src. 815 00:42:26,102 --> 00:42:27,050 Nato - 816 00:42:27,050 --> 00:42:28,500 >> JASON Hirschhorna: Torej bom ustaviti si tam, ker to je napačna. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Prav imaš s src, vendar kam naj src iti? 819 00:42:34,710 --> 00:42:35,960 >> [interposing GLAS] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON Hirschhorna: mora šel sem. 822 00:42:41,610 --> 00:42:43,790 To je src - naša src je tip. 823 00:42:43,790 --> 00:42:44,610 Oglejmo si tukaj. 824 00:42:44,610 --> 00:42:49,610 To se prosi za vrsto datoteke * smo pravzaprav jih ponavadi vidimo tako. 825 00:42:49,610 --> 00:42:57,630 Torej je ta zaprosila za argument Tip datoteke * imenovano tok, ki je src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Kaj velikost stvari narediti želimo brati? 828 00:43:00,410 --> 00:43:03,340 Dal sem vam to Opis problem. 829 00:43:03,340 --> 00:43:04,370 >> STUDENT 24: En bajt naenkrat. 830 00:43:04,370 --> 00:43:05,340 >> JASON Hirschhorna: En bajt. 831 00:43:05,340 --> 00:43:08,205 Kako velika je bajt? 832 00:43:08,205 --> 00:43:11,642 Njena velikost je v bajti, pa kaj Lahko sem dal tam? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25: One. 834 00:43:12,910 --> 00:43:14,730 >> JASON Hirschhorna: One. 835 00:43:14,730 --> 00:43:17,020 Prav. 836 00:43:17,020 --> 00:43:19,940 Njena velikost je v enoti bajta, zato 1 je 1 bajt. 837 00:43:19,940 --> 00:43:22,284 Koliko jih želim prebrati naenkrat. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26: One? 839 00:43:23,520 --> 00:43:24,270 >> JASON Hirschhorna: Ena stvar. 840 00:43:24,270 --> 00:43:28,540 Želim, da se glasi eno stvar velikosti 1, en ugriz naenkrat. 841 00:43:28,540 --> 00:43:32,110 In kje sem ga, ko sem ga prebral? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27: Destinacija? 844 00:43:36,510 --> 00:43:39,270 >> JASON Hirschhorna: Torej ne morem dati je naravnost v okolici. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28: Ti boš dal je v tretji kazalca? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27: Do cilja. 847 00:43:41,780 --> 00:43:42,270 >> JASON Hirschhorna: OK. 848 00:43:42,270 --> 00:43:42,630 Ja. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29: Lahko razglasi nekaj deluje kot začasno skladiščenje prej. 850 00:43:46,820 --> 00:43:47,350 >> JASON Hirschhorna: OK. 851 00:43:47,350 --> 00:43:50,080 Daj mi to. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29: Še ena datoteka kazalec, morda? 853 00:43:53,930 --> 00:43:54,220 >> JASON Hirschhorna: OK. 854 00:43:54,220 --> 00:43:55,585 Torej je ta nična zvezda - 855 00:43:55,585 --> 00:43:57,750 to je tip void zvezda, tako da ne biti datotek kazalec. 856 00:43:57,750 --> 00:44:02,520 In če berem en bajt, kjer bi bilo dobro mesto 857 00:44:02,520 --> 00:44:03,850 za shranjevanje en bajt? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29: matrika? 859 00:44:04,660 --> 00:44:05,770 >> JASON Hirschhorna: Niz. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 In kaj je še nekaj, kar je samo dimenzionira en bajt? 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: Ja. 865 00:44:18,530 --> 00:44:19,880 >> JASON Hirschhorna: char * ni en bajt. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29: znak. 867 00:44:20,440 --> 00:44:21,810 >> JASON Hirschhorna: char je en bajt. 868 00:44:21,810 --> 00:44:22,920 Kajne? 869 00:44:22,920 --> 00:44:26,740 Torej, kaj je to imenujemo buffer je generično ime se uporablja za te stvari za shranjevanje 870 00:44:26,740 --> 00:44:27,910 Nekaj ​​začasno. 871 00:44:27,910 --> 00:44:30,880 Zato sem ustvariti varovalo. 872 00:44:30,880 --> 00:44:31,150 Kajne? 873 00:44:31,150 --> 00:44:32,990 Vendar to ne bo praznino *. 874 00:44:32,990 --> 00:44:38,660 Mogoče imaš prav, da je mora biti pufer velikosti 0. 875 00:44:38,660 --> 00:44:41,070 Tako da shranjuje eno - 876 00:44:41,070 --> 00:44:41,280 prav. 877 00:44:41,280 --> 00:44:43,560 >> Ker je ta tukaj - char pufer učinek, ampak 878 00:44:43,560 --> 00:44:45,110 to traja praznino * - 879 00:44:45,110 --> 00:44:45,870 kazalec. 880 00:44:45,870 --> 00:44:50,640 Torej, jaz bi to naredil in zdaj buffer je kazalec. 881 00:44:50,640 --> 00:44:53,214 Kaj še lahko storim? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT 31: Put zvezdo poleg char. 883 00:44:55,775 --> 00:44:58,380 >> JASON Hirschhorna: sem lahko Ustvarili pa char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Kaj je ena stvar, kar sem lahko naredil? 886 00:45:03,131 --> 00:45:04,050 Ali pa gremo s to eno. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, pa kaj sem dal tu? 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 Hirschhorna: Buffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Buffer je kazalec na char. 893 00:45:14,500 --> 00:45:19,480 In na tem mestu, smo dajanje en bajt nekaj, kar sem prebral. 894 00:45:19,480 --> 00:45:19,980 Ja. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Samo hitro vprašanje. 897 00:45:21,230 --> 00:45:24,440 Ali želite malloc buffer? 898 00:45:24,440 --> 00:45:25,930 >> JASON Hirschhorna: Kdo lahko odgovoriti na to vprašanje? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: No, pravzaprav ni točka za vse, zdaj, tako da - 900 00:45:30,210 --> 00:45:32,610 >> JASON Hirschhorna: Toda, ali želimo, da ga malloc? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32: Če bi to naredil, da Tako, mislim, ja, saj bi si morali 902 00:45:35,600 --> 00:45:36,990 nekaj prostora za to, da kaže. 903 00:45:36,990 --> 00:45:38,350 >> JASON Hirschhorna: Ali imamo morali malloc? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: Če boste uporabljati zunaj zanke. 905 00:45:40,580 --> 00:45:42,524 >> JASON Hirschhorna: Ali bomo uporabljati zunaj zanke? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: Da. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35: Počakajte. 908 00:45:44,860 --> 00:45:46,980 Ne želimo, da se ugotovi, v zanki z onstranstva? 909 00:45:46,980 --> 00:45:50,100 >> JASON Hirschhorna: Torej, mislim, da imamo nekateri pseudo while zanko sem, da smo 910 00:45:50,100 --> 00:45:51,950 poskuša ugotoviti, da Vam še ni prišel do. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Mi ne potrebujemo, da ga malloc. 913 00:45:56,010 --> 00:45:59,310 Mi deluje v glavnem, to je samo še za uporabo v notranjosti te zanke. 914 00:45:59,310 --> 00:46:00,540 Ni pa potrebno, da obstaja izven tega. 915 00:46:00,540 --> 00:46:02,340 >> Tako je lahko lokalna spremenljivka. 916 00:46:02,340 --> 00:46:03,925 Imate kazalec Lokalna spremenljivka. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: Ampak to ni kaže na nič. 919 00:46:09,590 --> 00:46:11,540 >> JASON Hirschhorna: Ne, to ni inicializiran ničesar. 920 00:46:11,540 --> 00:46:12,790 Ampak mi ne bo uporabljala tudi. 921 00:46:12,790 --> 00:46:15,300 Bomo dal nekaj v to prvič, da jo uporabite. 922 00:46:15,300 --> 00:46:16,580 Tako da se zdi v redu. 923 00:46:16,580 --> 00:46:17,780 Torej ne potrebujemo malloc tukaj. 924 00:46:17,780 --> 00:46:19,360 In mislim, da je v redu, kot 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 Imamo fread linijo. 928 00:46:27,190 --> 00:46:28,490 Naredimo naslednje vrstice. 929 00:46:28,490 --> 00:46:32,984 >> Če želimo pisati v datoteko, kaj je Dobra funkcija uporabiti za to? 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 Hirschhorna: fprintf je ena. 933 00:46:36,010 --> 00:46:37,260 Kaj je še eden? 934 00:46:37,260 --> 00:46:37,680 >> STUDENT 39: fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON Hirschhorna: fwrite. 936 00:46:38,510 --> 00:46:41,250 In za naše namene, fwrite, ki smo ga videli tukaj, je 937 00:46:41,250 --> 00:46:42,500 verjetno boljša izbira. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 To traja štiri argumente, kot dobro. 940 00:46:53,950 --> 00:46:57,570 Nishant, lahko daš me argumenti? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: prva, ki je v teku biti samo pufer. 942 00:47:00,570 --> 00:47:02,210 >> JASON Hirschhorna: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: drugi pa je samo bo 1. 944 00:47:06,752 --> 00:47:09,510 Tretji pa se dogaja, da je 1. 945 00:47:09,510 --> 00:47:11,470 In četrti se bo dst. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON Hirschhorna: Ima kdo vsa vprašanja o tej progi? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Da izgleda dobro. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Torej, zdaj izgleda, da je eno stvar, ki smo si manjka - pravzaprav, kaj je pisanje 952 00:47:34,250 --> 00:47:35,090 ta zadnja vrstica. 953 00:47:35,090 --> 00:47:36,300 Zaprite datoteke. 954 00:47:36,300 --> 00:47:38,880 Kdo nam lahko končal pisanje ti zadnji dve vrstici? 955 00:47:38,880 --> 00:47:39,120 Da. 956 00:47:39,120 --> 00:47:39,850 Žal mi je, kako ti je ime? 957 00:47:39,850 --> 00:47:40,580 >> LUCY: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON Hirschhorna: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> LUCY: fclose src in potem fclose destinacija. 960 00:47:47,560 --> 00:47:52,430 >> JASON Hirschhorna: fclose, odprt paren, src, blizu paren, podpičje. 961 00:47:52,430 --> 00:47:53,680 In fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 ja? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: Odprto oklepaje, dst in potem podpičjem. 965 00:48:01,710 --> 00:48:02,520 >> JASON Hirschhorna: Great. 966 00:48:02,520 --> 00:48:04,338 In kaj naj vključi na koncu? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Vrnitev 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON Hirschhorna: Vrnitev 0. 969 00:48:05,570 --> 00:48:06,820 Ali moram? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Samo vprašanje. 972 00:48:12,590 --> 00:48:14,957 Ali moramo vključiti return 0? 973 00:48:14,957 --> 00:48:16,240 >> VEČ ŠTUDENTI: Ne 974 00:48:16,240 --> 00:48:16,430 >> JASON Hirschhorna: Ne 975 00:48:16,430 --> 00:48:18,090 Glavni počne avtomatsko Če prideš do konca. 976 00:48:18,090 --> 00:48:20,580 Ampak mislim, da je lepo, da vključiti eksplicitno. 977 00:48:20,580 --> 00:48:23,860 Še posebej, ko smo se vračajo drugo Stvari v celotnem programu. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 To je tisto, kar nam manjka - 980 00:48:26,230 --> 00:48:28,520 MEDTEM, kaj? 981 00:48:28,520 --> 00:48:31,630 Kdo lahko zamislite nekaj - 982 00:48:31,630 --> 00:48:35,240 ima nekaj smisla za kaj stvari bi lahko šel tja? 983 00:48:35,240 --> 00:48:37,350 Tudi če je samo v nekaterih psevdokoda kot jezik? 984 00:48:37,350 --> 00:48:41,330 >> Kaj smo res - kaj Ne želimo iti še? 985 00:48:41,330 --> 00:48:41,980 Ja, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: konec datoteke. 987 00:48:43,240 --> 00:48:44,990 >> JASON Hirschhorna: konec datoteke. 988 00:48:44,990 --> 00:48:49,280 Torej, kaj misliš s konca dokumenta? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: Ko dosežete konec datoteke, nehaj. 990 00:48:50,955 --> 00:48:51,240 >> JASON Hirschhorna: OK. 991 00:48:51,240 --> 00:48:53,460 Torej, ko pridemo do konca datoteke. 992 00:48:53,460 --> 00:48:56,893 Kako vemo, kdaj smo dosegli Konec datoteke? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: Mislim, da buffer bo nastavljen na NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41: Buffer se razglasi znotraj zanke. 995 00:49:01,885 --> 00:49:03,670 >> JASON Hirschhorna: Torej menite, buffer bo nastavljen na NULL. 996 00:49:03,670 --> 00:49:05,850 Zakaj bi varovalni nastavljen na NULL? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40: Ker, ko ste fread, skušate postaviti 998 00:49:10,420 --> 00:49:13,528 nič v pufru. 999 00:49:13,528 --> 00:49:13,980 >> JASON Hirschhorna: OK. 1000 00:49:13,980 --> 00:49:15,550 Torej misliš fread - 1001 00:49:15,550 --> 00:49:19,000 ko smo prišli do konca Datoteka, kaj se fread storili? 1002 00:49:19,000 --> 00:49:21,230 Mislim, da je vprašanje moramo ugotoviti. 1003 00:49:21,230 --> 00:49:21,960 Kaj fread storiti? 1004 00:49:21,960 --> 00:49:25,640 Ali je dal NULL v pufru, ali Ali pa kaj drugega? 1005 00:49:25,640 --> 00:49:27,510 Kako lahko ugotovimo, kaj ne? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENT 42: Man. 1007 00:49:28,190 --> 00:49:28,810 >> JASON Hirschhorna: Man. 1008 00:49:28,810 --> 00:49:32,280 Tako da je pogled tukaj. 1009 00:49:32,280 --> 00:49:34,000 Vrne vrednost. 1010 00:49:34,000 --> 00:49:39,620 O uspehu, fread in fwrite vrnete število kosov prebrati in vpisati. 1011 00:49:39,620 --> 00:49:43,700 To število je enako številu bajtov prenesejo samo, če je velikost 1. 1012 00:49:43,700 --> 00:49:47,780 Če pride do napake, ali na koncu je dosežena datoteke, vrne vrednost 1013 00:49:47,780 --> 00:49:51,490 Skratka Število element ali 0. 1014 00:49:51,490 --> 00:49:57,860 >> Torej za naše namene, če fread toku konec datoteke in bere iz 1015 00:49:57,860 --> 00:50:02,100 konec datoteke, ni nič ostalo da se glasi, kaj bo, da se vrnete? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON Hirschhorna: Kaj? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENT 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON Hirschhorna: Zero. 1020 00:50:05,690 --> 00:50:06,940 To se dogaja, da se vrnete nič. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Torej vemo, da fread, ko smo se dosegel konec datoteke, se bo 1023 00:50:13,010 --> 00:50:13,690 , da se vrnete nič. 1024 00:50:13,690 --> 00:50:17,460 Kako lahko uporabimo, da v našo korist? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Lahko razglasi spremenljivko zunaj zanke, imenovano pregled. 1026 00:50:21,733 --> 00:50:27,040 Če potrditveno enaka - 1027 00:50:27,040 --> 00:50:28,190 za zdaj - eno. 1028 00:50:28,190 --> 00:50:28,920 >> JASON Hirschhorna: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: In potem jih lahko naredi IF Izjava takoj po fread rekel, če 1030 00:50:38,050 --> 00:50:42,600 fread enaka nič - 1031 00:50:42,600 --> 00:50:43,850 št. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON Hirschhorna: Kdo lahko pomaga Avi ven? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Kakšna je vrednost z fread vrnil? 1036 00:50:52,410 --> 00:50:54,060 >> JASON Hirschhorna: Pravkar smo šli čez to. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Kako si to predstavljajo? 1038 00:50:55,450 --> 00:50:57,190 >> JASON Hirschhorna: Torej se vrne - dajmo poglej tukaj - se vrne 1039 00:50:57,190 --> 00:50:59,340 size_t, ki je v bistvu celo število. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Tako da vrne celo število. 1042 00:51:03,410 --> 00:51:05,160 In v našem primeru bo to vrne 1 ali 0 - 1043 00:51:05,160 --> 00:51:08,760 1. če je prebral eno stvar - en bajt, in 0, če smo prišli do konca. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Torej, če fread - 1046 00:51:16,450 --> 00:51:16,855 ja? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: Ne moreš dati polno fread (pufer, 1, 1, SRC) v 1048 00:51:20,330 --> 00:51:21,660 medtem ko je zanka? 1049 00:51:21,660 --> 00:51:26,510 >> JASON Hirschhorna: Torej vi predlagate tem v tam? 1050 00:51:26,510 --> 00:51:27,600 >> [interposing GLAS] 1051 00:51:27,600 --> 00:51:29,520 >> JASON Hirschhorna: Drži. 1052 00:51:29,520 --> 00:51:30,885 Torej bomo znebili tega. 1053 00:51:30,885 --> 00:51:33,300 Torej predlaga dajanje v tam fread? 1054 00:51:33,300 --> 00:51:35,457 Kaj moramo tudi premakniti Če želite to narediti? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45: buffer zunaj. 1056 00:51:36,740 --> 00:51:38,110 >> JASON Hirschhorna: Morali bi tudi to izseliti tukaj. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: Ampak ne, da nenehno premakniti naprej? 1058 00:51:41,700 --> 00:51:42,950 >> [interposing GLAS] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON Hirschhorna: OK. 1061 00:51:47,470 --> 00:51:50,570 Torej, to je tisto, kar Okshar predlagal. 1062 00:51:50,570 --> 00:51:51,930 Mi ustvarjamo našo buffer. 1063 00:51:51,930 --> 00:51:57,020 Mi MEDTEM fread, potem fwrite. 1064 00:51:57,020 --> 00:51:59,760 Misli o tem? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46: Moje edino vprašanje je, ali bi dejansko izvršiti ukaza fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON Hirschhorna: Great vprašanje. 1067 00:52:06,175 --> 00:52:11,050 Ko ste dajanje klic funkcije notranjost stanju, ne da 1068 00:52:11,050 --> 00:52:12,300 klic funkcije usmrtitev? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Videli smo primere že prej. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Kajne? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENT 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Ja. 1075 00:52:26,590 --> 00:52:30,140 Torej to ne izvrši. 1076 00:52:30,140 --> 00:52:31,790 >> JASON Hirschhorna: Videli smo stvari tako pred, kjer imamo 1077 00:52:31,790 --> 00:52:33,550 klic funkcije znotraj pogoj. 1078 00:52:33,550 --> 00:52:35,540 Ali ta klic funkcije usmrtitev? 1079 00:52:35,540 --> 00:52:36,350 Da. 1080 00:52:36,350 --> 00:52:37,410 Torej, odgovor je pritrdilen. 1081 00:52:37,410 --> 00:52:41,010 Ta klic funkcije bodo izvajale. 1082 00:52:41,010 --> 00:52:42,418 Ampak še enkrat, je to tisto, kar si želimo? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Kar je eden od načinov, da bi lahko ugotovili , če je to tisto, kar si želimo? 1085 00:52:52,204 --> 00:52:53,470 >> VEČ ŠTUDENTI: to Run? 1086 00:52:53,470 --> 00:52:54,460 >> JASON Hirschhorna: Lahko bi ga zaženite. 1087 00:52:54,460 --> 00:52:57,500 Toda preden bomo to storili, smo lahko Razumno, tudi skozi to. 1088 00:52:57,500 --> 00:52:57,920 Če - 1089 00:52:57,920 --> 00:53:01,920 pravijo, da imamo en bajt v našem datoteko, bomo prišli do sem, 1090 00:53:01,920 --> 00:53:02,660 bomo prišli do te kode. 1091 00:53:02,660 --> 00:53:03,620 Ta bo deloval. 1092 00:53:03,620 --> 00:53:07,780 fread bo vrnil en bajt in shranite v pufru. 1093 00:53:07,780 --> 00:53:11,290 In to bo ocenila na 1, Prav, potem ko se vrne 1. 1094 00:53:11,290 --> 00:53:12,640 >> Torej, medtem ko 1. 1095 00:53:12,640 --> 00:53:15,325 Ali to pomeni kodo notranjosti zanko, medtem ko bo usmrtitev? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47: Ja. 1097 00:53:15,453 --> 00:53:16,040 Res je. 1098 00:53:16,040 --> 00:53:16,290 >> JASON Hirschhorna: Da. 1099 00:53:16,290 --> 00:53:17,490 1. Res je. 1100 00:53:17,490 --> 00:53:18,240 To ni 0. 1101 00:53:18,240 --> 00:53:20,360 Tako bo koda noter izvršiti. 1102 00:53:20,360 --> 00:53:22,300 Torej bomo napisali to. 1103 00:53:22,300 --> 00:53:25,340 Bomo premakniti nazaj na to linija še enkrat. 1104 00:53:25,340 --> 00:53:26,850 Zdaj imamo - 1105 00:53:26,850 --> 00:53:28,550 smo na koncu naše datoteke. 1106 00:53:28,550 --> 00:53:30,980 Beremo od konca našega spisa, ker smo imeli samo en bajt v njem. 1107 00:53:30,980 --> 00:53:34,270 >> Fread vrne 0, trgovin nekaj v pufru. 1108 00:53:34,270 --> 00:53:35,890 Iskreno ne vem, kaj ga shrani v vmesni pomnilnik. 1109 00:53:35,890 --> 00:53:38,380 Mi bi verjetno poglej gor da vidim, kaj počne. 1110 00:53:38,380 --> 00:53:40,130 Da Iskreno ne vem. 1111 00:53:40,130 --> 00:53:43,090 Ne vemo, koga briga kaj ga shrani v buffer? 1112 00:53:43,090 --> 00:53:44,010 Vendar pa vrne 0.. 1113 00:53:44,010 --> 00:53:45,440 In medtem ko 0 usmrtitev? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> MEDTEM 0 ne bodo izvajale. 1116 00:53:51,180 --> 00:53:54,030 Torej bova odšla sem. 1117 00:53:54,030 --> 00:53:58,870 Torej, kaj je z dvigom rok, če je to je koda, da bi morali teči, ali če 1118 00:53:58,870 --> 00:54:00,140 je treba storiti, spremembe prvi. 1119 00:54:00,140 --> 00:54:02,180 Torej, če mislite - boste morali glasovati. 1120 00:54:02,180 --> 00:54:06,885 Če menite, da bi morali zagnati to kodo kot je, prosim, dvignite roko. 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 Še ena - 1124 00:54:14,315 --> 00:54:17,260 imaš kakšno vprašanje, zaskrbljenost? 1125 00:54:17,260 --> 00:54:18,080 Ja. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: Ko gremo buffer zunaj zanke, bomo 1127 00:54:21,240 --> 00:54:22,670 morali malloc? 1128 00:54:22,670 --> 00:54:23,310 >> JASON Hirschhorna: Great vprašanje. 1129 00:54:23,310 --> 00:54:26,670 Potem gremo blažilce zunaj zanka, bomo morali malloc? 1130 00:54:26,670 --> 00:54:28,400 To je področje vprašanje. 1131 00:54:28,400 --> 00:54:32,130 Če želimo zagnati buffer zunaj te zanke, bo obstajajo 1132 00:54:32,130 --> 00:54:33,534 Notranjost zanke? 1133 00:54:33,534 --> 00:54:35,230 >> VEČ ŠTUDENTI: Da. 1134 00:54:35,230 --> 00:54:35,580 >> JASON Hirschhorna: Da. 1135 00:54:35,580 --> 00:54:40,100 Njeno področje zajema znotraj zanke, in, res, kaj je spodaj v notranjosti 1136 00:54:40,100 --> 00:54:42,460 tega kodeksa, vključno stvari tu notri. 1137 00:54:42,460 --> 00:54:43,930 Torej nam ni treba, da ga malloc. 1138 00:54:43,930 --> 00:54:47,766 To je lokalna spremenljivka, in njegov obseg še vedno vsebuje zanko. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: Ali moramo to zastonj? 1140 00:54:49,540 --> 00:54:51,770 >> JASON Hirschhorna: Ali imamo potrebujete za brezplačno buffer? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Ja, če ne bomo malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON Hirschhorna: Ali imamo potrebujete za brezplačno buffer? 1143 00:54:55,750 --> 00:54:57,160 Mi pa ne. 1144 00:54:57,160 --> 00:55:01,280 Spet je lokalna spremenljivka, tako da nam ni treba sprostiti. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Poglejmo, kaj se zgodi. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Torej je Neinicializirano. 1149 00:55:18,220 --> 00:55:20,830 To je bilo kar nekaj, Marcus predlagajo prej. 1150 00:55:20,830 --> 00:55:25,340 Torej imamo, da napake, spremenljivo buffer se nezačeto ko se uporablja tukaj. 1151 00:55:25,340 --> 00:55:26,590 >> Kako lahko to popravimo? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50: to malloc? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51: Enako NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Povejte buffer enaka NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON Hirschhorna: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Izgleda dobro. 1159 00:55:40,770 --> 00:55:42,410 Jo imamo zdaj. 1160 00:55:42,410 --> 00:55:45,630 Poglejmo nekaj ustvariti, da bi poskušali kopirati. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Torej imamo besedilno datoteko. 1163 00:56:10,490 --> 00:56:11,740 Kako lahko zaženete ta program? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Ja. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENT 53: To lahko naredite piko slash CP test.txt. 1167 00:56:22,230 --> 00:56:25,140 In potem lahko naštejemo še eno datoteko , ki se bo shranjevanje v. 1168 00:56:25,140 --> 00:56:25,510 >> JASON Hirschhorna: OK. 1169 00:56:25,510 --> 00:56:27,380 Imenovali jo bomo out.txt. 1170 00:56:27,380 --> 00:56:28,630 Kul? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg krivda. 1173 00:56:34,320 --> 00:56:35,570 Misli o krivdi uvodnih? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 To je super. 1176 00:56:41,390 --> 00:56:45,040 Kako lahko ugotovite, kje napaka seg je? 1177 00:56:45,040 --> 00:56:45,680 Kaj? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENT 54: Gdb. 1179 00:56:45,990 --> 00:56:47,240 >> JASON Hirschhorna: Gdb. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Vodimo gdb s pisanjem gdb dot poševnica, ime našega programa. 1182 00:56:55,300 --> 00:56:57,020 Ni argumenti v ukazni vrstici tam. 1183 00:56:57,020 --> 00:56:59,570 Bomo nastavite Ustavljanje na glavni. 1184 00:56:59,570 --> 00:57:02,190 Če želim, da začnete gdb, kaj naj storim? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON Hirschhorna: R. In kaj potem? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55: Argumenti? 1188 00:57:09,400 --> 00:57:10,650 >> JASON Hirschhorna: Nato argumenti v ukazni vrstici. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Sprehodimo se skozi. 1191 00:57:17,120 --> 00:57:19,090 N se mi samo ob po vrsticah. 1192 00:57:19,090 --> 00:57:21,450 Jaz grem, dokler Dobim SEG napako. 1193 00:57:21,450 --> 00:57:22,700 Tukaj je moja krivda seg. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Izgleda, da fread povzročil moja seg krivda. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Vem fread povzročil moj SEG napako, ker so bili 1198 00:57:32,770 --> 00:57:34,950 linijo smo pravkar usmrtili. 1199 00:57:34,950 --> 00:57:36,530 >> In edina stvar, ki je bila dogaja v tej smeri - 1200 00:57:36,530 --> 00:57:37,520 Dve stvari so se dogaja. 1201 00:57:37,520 --> 00:57:40,610 Fread je šlo, potem pa smo bili delaš nekaj Med preverjanjem. 1202 00:57:40,610 --> 00:57:44,820 Jaz sem pripravljen staviti, da MEDTEM preverjanje ni bila povzroča moje SEG napako. 1203 00:57:44,820 --> 00:57:46,950 Najverjetneje je bil fread povzroča moje SEG napako. 1204 00:57:46,950 --> 00:57:49,260 Vidim tudi nekaj tukaj, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Spomin kopijo. 1206 00:57:50,500 --> 00:57:53,820 Podoben gibljejo spomin iz ene lokacije na drugo. 1207 00:57:53,820 --> 00:57:56,890 Zveni kot nekaj, kar bi se zgodilo V fread, morda nekaj pomnilnika 1208 00:57:56,890 --> 00:57:58,910 gibljejo od tu do tu. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Gremo skozi to še enkrat. 1211 00:58:03,860 --> 00:58:06,900 Kako se začeti znova in ga ponovno zagnati? 1212 00:58:06,900 --> 00:58:08,092 Ja. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: Ali boste morali dati ampersand pred buffer? 1214 00:58:15,140 --> 00:58:17,800 >> JASON Hirschhorna: Torej ampersand pred buffer bi mi naslov 1215 00:58:17,800 --> 00:58:22,330 pufer, ki je znak *. 1216 00:58:22,330 --> 00:58:25,250 Oglejmo teči skozi to še enkrat. 1217 00:58:25,250 --> 00:58:28,248 Kako teči skozi to še enkrat? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: Ali lahko samo tip spet teči? 1219 00:58:29,210 --> 00:58:32,050 >> JASON Hirschhorna: Samo enkrat vnesite tek. 1220 00:58:32,050 --> 00:58:33,415 Torej ne gremo na izvršitev te vrstice. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Torej buffer je NULL kazalec. 1223 00:58:39,240 --> 00:58:40,490 Popraviti? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 To kaže, da - poglejmo. 1226 00:58:47,060 --> 00:58:48,500 Če imamo - 1227 00:58:48,500 --> 00:58:50,430 pripraviti hitro sliko o tem. 1228 00:58:50,430 --> 00:58:53,500 Lahko vsi videli, če Pišem tukaj? 1229 00:58:53,500 --> 00:59:02,890 >> Torej, v plasteh, imamo lokalno spremenljiva in je pozval buffer, in 1230 00:59:02,890 --> 00:59:08,230 to je kazalec na char. 1231 00:59:08,230 --> 00:59:10,325 Kaj je naslov ta znak na? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON Hirschhorna: Right. 1234 00:59:13,400 --> 00:59:14,200 To je to. 1235 00:59:14,200 --> 00:59:17,600 V tu notri buffer, ki je shranjena 0x0. 1236 00:59:17,600 --> 00:59:20,480 To je tisto, kar imamo - Nastavitev imamo zdaj. 1237 00:59:20,480 --> 00:59:27,540 Torej, ta vrstica, fread, postavlja nekaj od vira kje? 1238 00:59:27,540 --> 00:59:30,560 V to okno ali te škatle? 1239 00:59:30,560 --> 00:59:31,060 Ki škatla? 1240 00:59:31,060 --> 00:59:33,290 Levo okno ali desno okno? 1241 00:59:33,290 --> 00:59:34,750 Ta pravica polje. 1242 00:59:34,750 --> 00:59:38,440 >> Iz tega sledi, kazalec, in ga postavi tukaj. 1243 00:59:38,440 --> 00:59:42,620 Ko smo poskušali in spomin na dotik Lokacija 0, kaj smo dobili? 1244 00:59:42,620 --> 00:59:45,050 Segmentacije krivda. 1245 00:59:45,050 --> 00:59:46,550 To je napaka imamo zdaj. 1246 00:59:46,550 --> 00:59:46,970 Ja. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: Ali nimate naj zvezda buffer? 1248 00:59:48,410 --> 00:59:49,180 Ali ne? 1249 00:59:49,180 --> 00:59:50,050 Za fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON Hirschhorna: Torej fread traja kazalec. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Tako da prehaja v pufru. 1253 00:59:55,900 --> 00:59:58,980 In potem bomo de-reference nekje v notranjosti fread. 1254 00:59:58,980 --> 01:00:00,700 Ampak še enkrat, bomo videli, je potrebno kazalec. 1255 01:00:00,700 --> 01:00:02,560 Mi ne potrebujemo, da jo posredujejo zvezdicami rezerve. 1256 01:00:02,560 --> 01:00:05,350 To bi lahko opravile je vse, kar je tukaj. 1257 01:00:05,350 --> 01:00:07,980 In da bi nam verjetno dal napako ker smo ga de primerjal. 1258 01:00:07,980 --> 01:00:08,150 >> Kajne? 1259 01:00:08,150 --> 01:00:10,690 Ko smo de referenčna ta kazalec, ko skušamo dostop do te lokacije, 1260 01:00:10,690 --> 01:00:13,140 smo dobili napako - naša segmentacije krivda. 1261 01:00:13,140 --> 01:00:15,800 Torej - 1262 01:00:15,800 --> 01:00:16,690 oops. 1263 01:00:16,690 --> 01:00:19,090 Bomo nehal iz GDB. 1264 01:00:19,090 --> 01:00:20,160 Naša linija - 1265 01:00:20,160 --> 01:00:22,990 naš problem - prav Tukaj na tej liniji. 1266 01:00:22,990 --> 01:00:26,410 In to je problem, ker te cevi. 1267 01:00:26,410 --> 01:00:31,780 >> Kako lahko ustvarite polje, ki je dostopen v fread. 1268 01:00:31,780 --> 01:00:31,980 Kajne? 1269 01:00:31,980 --> 01:00:35,190 Moramo ustvariti polje, ki je eden bajt velika, velikost ZNAK. 1270 01:00:35,190 --> 01:00:38,590 Vendar pa moramo, da je škatla, da so dostopni ko se ta funkcija izvaja. 1271 01:00:38,590 --> 01:00:39,390 Torej, če - 1272 01:00:39,390 --> 01:00:39,640 ja. 1273 01:00:39,640 --> 01:00:40,440 Vse ideje? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: Samo nastavite kot koli naključno znak. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Samo naredi Char Buffer enaka značaj. 1277 01:00:51,640 --> 01:00:53,795 In potem, ko ste tam blažilce - 1278 01:00:53,795 --> 01:00:54,110 >> JASON Hirschhorna: Počakajte. 1279 01:00:54,110 --> 01:00:55,110 Char buffer? 1280 01:00:55,110 --> 01:00:55,880 Torej ni zvezda? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Ja. 1282 01:00:56,390 --> 01:00:58,560 Vzemite zvezda. 1283 01:00:58,560 --> 01:01:00,690 Enako naključni značaj. 1284 01:01:00,690 --> 01:01:01,460 >> JASON Hirschhorna: OK. 1285 01:01:01,460 --> 01:01:02,420 Daj mi eno. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Kot ali kaj podobnega. 1287 01:01:03,170 --> 01:01:06,160 In potem, ko imate buffer tam, boste uporabili - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: Star? 1289 01:01:06,420 --> 01:01:07,650 Oh no, ampersand. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60: Uporabite znak &. 1291 01:01:09,000 --> 01:01:09,470 >> JASON Hirschhorna: OK. 1292 01:01:09,470 --> 01:01:11,320 In kaj je v fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60: Ponovno uporabite znak &. 1294 01:01:14,150 --> 01:01:14,320 >> JASON Hirschhorna: V redu. 1295 01:01:14,320 --> 01:01:20,970 Torej tvoja ideja je, da smo ustvarili char in dal nekaj v njem, in nato 1296 01:01:20,970 --> 01:01:22,612 pisati v char. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Ja. 1298 01:01:23,760 --> 01:01:25,916 >> JASON Hirschhorna: Kaj ljudje mislijo? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: To je zapletena. 1300 01:01:27,770 --> 01:01:28,460 >> JASON Hirschhorna: OK. 1301 01:01:28,460 --> 01:01:29,760 Dajmo ga potegnili. 1302 01:01:29,760 --> 01:01:35,720 Torej ta čas, grem, da pripravi to rdeči na kupu tukaj, potem pa 1303 01:01:35,720 --> 01:01:36,410 bodo imeli - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Žal mi je. 1306 01:01:38,060 --> 01:01:45,930 Torej, tokrat imamo nekaj, kar ti pufer, in da je na kupu. 1307 01:01:45,930 --> 01:01:48,430 Popraviti? 1308 01:01:48,430 --> 01:01:51,520 In smo varčevanje v njem je, na začetku. 1309 01:01:51,520 --> 01:01:53,830 >> Potem imamo klic fread. 1310 01:01:53,830 --> 01:02:01,300 Kaj fread pa se je potrebno bajt od naša datoteko in jo postavi nekam. 1311 01:02:01,300 --> 01:02:04,570 To ga postavlja v kakršnikoli stvar je, ki kažejo na. 1312 01:02:04,570 --> 01:02:09,130 No, preden smo imeli ta naslov - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Zdaj, kaj naslov imamo? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: Karkoli naslov blažilec. 1316 01:02:14,650 --> 01:02:15,970 >> JASON Hirschhorna: Karkoli naslov blažilec. 1317 01:02:15,970 --> 01:02:22,370 To je verjetno, da bo nekaj takega. 1318 01:02:22,370 --> 01:02:26,950 Verjetno bo, da začnete z b in f, nato pa še šest drugih 1319 01:02:26,950 --> 01:02:27,970 šestnajstiških številk. 1320 01:02:27,970 --> 01:02:28,480 Ni važno. 1321 01:02:28,480 --> 01:02:29,470 Nekatere naslov. 1322 01:02:29,470 --> 01:02:31,410 In mi gre ta naslov noter 1323 01:02:31,410 --> 01:02:34,790 >> In bomo, da bo naš enega bajt stvar na tem naslovu. 1324 01:02:34,790 --> 01:02:38,470 Torej bomo, da bo naš enega bajt stvar tu notri. 1325 01:02:38,470 --> 01:02:40,800 In potem se bomo pisati kaj je kdaj tu notri. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Ima kdo kakšna vprašanja o tem? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Ki misli, da je ta koda bo delovalo? 1330 01:02:54,690 --> 01:02:56,020 >> Dvignite roko, če menite, ta koda bo delovala. 1331 01:02:56,020 --> 01:02:57,270 Moraš sprejeti stališče. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 In ki misli, da je ta koda ne bo delovalo? 1334 01:03:02,500 --> 01:03:04,610 Naj dvigne roko. 1335 01:03:04,610 --> 01:03:06,750 Vsi ostali morajo biti dvig svoje roke. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, kje stojiš? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL: Ne morem se odločiti. 1339 01:03:10,680 --> 01:03:12,070 Nekako v sredini. 1340 01:03:12,070 --> 01:03:12,736 >> JASON Hirschhorna: Ti si v sredini. 1341 01:03:12,736 --> 01:03:13,092 Izberi eno. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Jaz bom vero in pravijo, da bo delovalo. 1343 01:03:14,400 --> 01:03:14,660 >> JASON Hirschhorna: OK. 1344 01:03:14,660 --> 01:03:16,047 Boste imeli vero in pravijo, da deluje? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Kaj se je zgodilo? 1347 01:03:27,020 --> 01:03:28,270 >> [interposing GLAS] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON Hirschhorna: Ne seg krivda. 1350 01:03:35,950 --> 01:03:40,320 Kako lahko preverite, če Dve stvari sta enaka? 1351 01:03:40,320 --> 01:03:42,060 Dve datoteki sta enaki. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENT 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON Hirschhorna: Diff. 1354 01:03:45,490 --> 01:03:51,630 Primerjanje pregledi za razlike med dve datoteki, in če se vrne 1355 01:03:51,630 --> 01:03:52,890 nič, oni so enaki. 1356 01:03:52,890 --> 01:03:59,030 In če bomo odprli, bomo dobili naše datoteke. 1357 01:03:59,030 --> 01:04:00,490 Tako, da je pravilna rešitev. 1358 01:04:00,490 --> 01:04:01,780 Oglejmo pogled nazaj na to še enkrat. 1359 01:04:01,780 --> 01:04:04,080 Mi dejansko sploh ni morali zagnati. 1360 01:04:04,080 --> 01:04:05,520 >> Verjetno bi bilo videti malo čistejše, če nisi dal 1361 01:04:05,520 --> 01:04:07,680 nekaj naključno tam. 1362 01:04:07,680 --> 01:04:13,070 Točka pa si je potrebno ustvariti nekaj prostora za shranjevanje nekaj iz 1363 01:04:13,070 --> 01:04:15,530 fread in traja nekaj iz fwrite. 1364 01:04:15,530 --> 01:04:18,400 In to, kar je bilo treba bodisi lokalno spremenljivka na kupu - vi 1365 01:04:18,400 --> 01:04:19,890 Lahko bi malloc'd nekaj prostora. 1366 01:04:19,890 --> 01:04:23,030 >> Tako da bi lahko dejansko napisal malloc tukaj, in 1367 01:04:23,030 --> 01:04:25,420 da bi delali. 1368 01:04:25,420 --> 01:04:28,660 In potem bi bili shranjevanje naši stvari nekje na kupu. 1369 01:04:28,660 --> 01:04:31,940 Ampak to je dejansko verjetno, Najbolj elegantna rešitev. 1370 01:04:31,940 --> 01:04:34,490 Samo ustvariti nekaj prostora na kupu za te stvari, da gredo. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Jaz bi imel dve druge pripombe. 1373 01:04:38,990 --> 01:04:44,650 Če ste bili, da bo na vrsti v tem, in Nato se je dosegel to, moji komentarji 1374 01:04:44,650 --> 01:04:47,400 bi bila, kot sledi. 1375 01:04:47,400 --> 01:04:54,300 Gre 1 je tukaj, z mano, poglej kot čarobne številke. 1376 01:04:54,300 --> 01:04:56,860 Ta 1, v smislu fread, smiselna. 1377 01:04:56,860 --> 01:04:59,580 To je veliko stvari, brati ali pisati. 1378 01:04:59,580 --> 01:05:03,740 >> Ampak tale tukaj bi morala Verjetno je nekaj drugega. 1379 01:05:03,740 --> 01:05:05,180 Torej, kaj je ena rešitev? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: Velikost bajt. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON Hirschhorna: Tako? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: Velikost char. 1384 01:05:13,130 --> 01:05:13,820 >> JASON Hirschhorna: Velikost char. 1385 01:05:13,820 --> 01:05:15,290 Ja, bajt ni tip. 1386 01:05:15,290 --> 01:05:16,320 Torej velikost značil del. 1387 01:05:16,320 --> 01:05:30,270 Lahko bi, na vrhu naša koda, # opredeljeno, da. 1388 01:05:30,270 --> 01:05:33,410 Imenuje nekaj BYTE in to je res znak. 1389 01:05:33,410 --> 01:05:37,675 Pravzaprav, še boljši pristop Morda je bil to - 1390 01:05:37,675 --> 01:05:39,391 UINT. 1391 01:05:39,391 --> 01:05:40,780 Ali kdo ve, kaj je to? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Žal mi je. 1394 01:05:44,840 --> 01:05:46,090 Imam ga nazaj. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Čakaj, no. 1397 01:05:52,200 --> 01:05:53,450 V katero smer gre? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Ali kdo ve, kaj je to? 1400 01:05:59,660 --> 01:06:00,950 Ja. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67: Naj bi pomagala poenotiti preko sistemov stvari, ki jih 1402 01:06:05,650 --> 01:06:08,760 imajo - kot nepodpisane celih da imajo 8 bajtov? 1403 01:06:08,760 --> 01:06:11,785 >> JASON Hirschhorna: To je Točno tako. 1404 01:06:11,785 --> 01:06:14,310 Na različnih strojih, velikost char - 1405 01:06:14,310 --> 01:06:15,180 običajno ni znak. 1406 01:06:15,180 --> 01:06:16,100 Znakov so navadno en bajt. 1407 01:06:16,100 --> 01:06:19,590 Vendar velikosti iz drugih podatkovnih tipov različnih velikosti na 32-bitnem računalniku 1408 01:06:19,590 --> 01:06:21,370 v primerjavi s 64-bitno napravo. 1409 01:06:21,370 --> 01:06:25,180 Uint8_t je vedno 8 bitov - 1410 01:06:25,180 --> 01:06:27,210 Vedno en bajt. 1411 01:06:27,210 --> 01:06:29,580 >> In moram vključiti, da standardna int glava datoteke. 1412 01:06:29,580 --> 01:06:35,040 Torej sedaj, bi bili verjetno Najboljši način, da napišem to kodo. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Tako se znebim čarobne številke. 1415 01:06:41,450 --> 01:06:44,690 In sem tudi bolj logično tip za buffer. 1416 01:06:44,690 --> 01:06:49,450 To ni le znak, da je bajt, kar je tisto, kar smo pričakovali, da bo. 1417 01:06:49,450 --> 01:06:53,400 >> In tu gor, ki smo jih dejansko bil malo bolj robusten. 1418 01:06:53,400 --> 01:06:55,190 Nismo ga kliče znak, ki - 1419 01:06:55,190 --> 01:06:58,630 Mogoče kdo ve - je lahko drugačna velikost na različnih strojih. 1420 01:06:58,630 --> 01:07:02,025 Mi smo dejansko rekel to je točno en bajt, vedno, ne glede na to, kaj. 1421 01:07:02,025 --> 01:07:05,810 In če pogledamo tukaj, naredimo cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Kaj se je zgodilo? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: Morda se vklopi. 1426 01:07:16,170 --> 01:07:17,880 >> JASON Hirschhorna: Kaj? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: Ali je to? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: Nisi opredelimo kot vrsto. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71: Ampak to bi morali opredeljena v standardu. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72: Kaj se dogaja? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73: Ali naj opredeli biti vsi pokrovi? 1434 01:07:40,210 --> 01:07:41,370 >> JASON Hirschhorna: Torej ni # define. 1435 01:07:41,370 --> 01:07:45,490 Pravzaprav, v tem primeru, sem boste uporabljali typedef. 1436 01:07:45,490 --> 01:07:48,590 Ker smo ga uporabljate kot tip na enem mestu. 1437 01:07:48,590 --> 01:07:51,990 Torej, v tem primeru dejansko želimo typedef kot smo tiskanju novo vrsto 1438 01:07:51,990 --> 01:07:54,490 bajt, in je v bistvu to. 1439 01:07:54,490 --> 01:07:56,590 To je nekoliko drugačna kot # define. 1440 01:07:56,590 --> 01:08:02,740 >> In zdaj naša koda deluje odlično. 1441 01:08:02,740 --> 01:08:05,230 Torej, še enkrat, # define traja nekaj ga nadomešča povsod 1442 01:08:05,230 --> 01:08:06,780 z drugo stvarjo. 1443 01:08:06,780 --> 01:08:07,920 To je samo makro - 1444 01:08:07,920 --> 01:08:09,420 okrajšava, da se znebite čarobne številke. 1445 01:08:09,420 --> 01:08:11,360 Toda v tem primeru, ker smo jo uporabljajo kot neke vrste - 1446 01:08:11,360 --> 01:08:12,180 tukaj - 1447 01:08:12,180 --> 01:08:19,880 z namenom, da se to dela, moramo da typedef karkoli bajt. 1448 01:08:19,880 --> 01:08:21,840 >> In mi smo ga opredeljuje tukaj. 1449 01:08:21,840 --> 01:08:24,750 To ni struct, da je dejansko Samo nepodpisani celo število. 1450 01:08:24,750 --> 01:08:27,680 To je en bajt dolgo. 1451 01:08:27,680 --> 01:08:31,910 Ta koda bo na voljo na spletu, in ti bi morali vsi ga imajo zdaj. 1452 01:08:31,910 --> 01:08:33,830 >> Torej imamo - 1453 01:08:33,830 --> 01:08:34,250 popoln - 1454 01:08:34,250 --> 01:08:41,359 V 13. minuti zapustil, da gredo več problem nastaviti 5. 1455 01:08:41,359 --> 01:08:44,270 Želim, da sprehod skozi copy.c skupaj, in potem bomo na kratko pogovorila 1456 01:08:44,270 --> 01:08:47,120 o drugih delov problema nastaviti. 1457 01:08:47,120 --> 01:08:48,899 Zato mi dovolite, dvigni copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 In kul stvar je, ki smo jih dejansko že napisal veliko tega kodeksa. 1460 01:09:08,810 --> 01:09:11,180 >> Koda smo pisali dobesedno tik prišel ven, ko sem bil 1461 01:09:11,180 --> 01:09:13,120 to pisanje na svoje. 1462 01:09:13,120 --> 01:09:16,990 Ampak to je copy.c, je osnova v prvih dveh delih 1463 01:09:16,990 --> 01:09:22,340 Problem nastavite za whodunit.c, ki boste morali napisati, in resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, ki je tretja in zadnja Del problema niza, ni 1465 01:09:27,050 --> 01:09:29,529 temelji off te datoteke. 1466 01:09:29,529 --> 01:09:32,200 >> Boste morali napisati datoteko, smo vam predlogo za to 1467 01:09:32,200 --> 01:09:34,620 datoteko, vendar pa to nima nič storiti z copy.c. 1468 01:09:34,620 --> 01:09:38,675 Ampak zato, ker copy.c je temelj za prva dva dela, bomo 1469 01:09:38,675 --> 01:09:42,000 hoditi po njem zdaj, tako da boste imeli Dober občutek, kaj počne. 1470 01:09:42,000 --> 01:09:43,640 >> In pripombe dati nekaj od tega proč. 1471 01:09:43,640 --> 01:09:45,120 Smo že napisal nekaj o tem. 1472 01:09:45,120 --> 01:09:49,220 Najprej smo se prepričajte smo dobili tri argumente. 1473 01:09:49,220 --> 01:09:50,560 Nato smo si zapomniti imena datoteke. 1474 01:09:50,560 --> 01:09:52,960 Tako smo preskočili ta korak, ko smo označeni našo stvar - 1475 01:09:52,960 --> 01:09:54,700 ko je naša cp. 1476 01:09:54,700 --> 01:09:56,750 Ampak tukaj, oni so tako je nekoliko čistejši. 1477 01:09:56,750 --> 01:09:59,350 >> Oni preverimo, obe datoteki so dobri, v 1478 01:09:59,350 --> 01:10:00,450 Poleg tega, da jih odpira. 1479 01:10:00,450 --> 01:10:04,760 Napisali smo vse to kodo šele zdaj, zato sem ne bom spuščala v to oznako. 1480 01:10:04,760 --> 01:10:09,670 Naprej je nekaj stvari, ki je specifična za vrste datotek, smo z uporabo, ki 1481 01:10:09,670 --> 01:10:12,240 so bitnih slik. 1482 01:10:12,240 --> 01:10:15,660 Bitnih slik imajo nekaj metapodatkov povezane z njimi. 1483 01:10:15,660 --> 01:10:20,190 >> Torej, prvih nekaj bajtov vam povem o datoteki. 1484 01:10:20,190 --> 01:10:23,460 Niso barve pixel v tej podobi. 1485 01:10:23,460 --> 01:10:25,120 So vam povem o datoteki. 1486 01:10:25,120 --> 01:10:28,220 In če ste prebrali problem niz, boste imeli veliko več informacij 1487 01:10:28,220 --> 01:10:33,100 na kakšne vrste metapodatkov struktur so vključeni v bitne slike. 1488 01:10:33,100 --> 01:10:39,350 >> Ampak to je, zakaj imamo ta prvi set - to kodo tukaj. 1489 01:10:39,350 --> 01:10:42,490 Beremo metapodatke - 1490 01:10:42,490 --> 01:10:45,800 dva kosa meta - datoteko Glava in info glavo. 1491 01:10:45,800 --> 01:10:51,030 In mi smo preverjanje nekaterih njegovih delov na prepričajte, da je res, bitna slika 1492 01:10:51,030 --> 01:10:52,420 pred nadaljevanjem. 1493 01:10:52,420 --> 01:10:55,470 >> In spet, to so podrobnosti smo vam ni treba iti v zdaj. 1494 01:10:55,470 --> 01:10:57,720 Če ste prebrali problem niz, boste razumeli to. 1495 01:10:57,720 --> 01:11:01,370 Skratka, ti samo pravim, to je bitna slika, in 1496 01:11:01,370 --> 01:11:02,810 potrjuje, da. 1497 01:11:02,810 --> 01:11:05,180 >> Nato smo pišete tiste, do datoteke ven. 1498 01:11:05,180 --> 01:11:05,660 Vidimo, da je tu. 1499 01:11:05,660 --> 01:11:06,910 Pišemo na ven kazalca. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Nato smo si določanju oblazinjenje. 1502 01:11:11,320 --> 01:11:15,240 Še enkrat, kot je posebnost z bitna slika, nekatere linije vključujejo 1503 01:11:15,240 --> 01:11:16,840 oblazinjenje na koncu. 1504 01:11:16,840 --> 01:11:19,000 In če ste prebrali problem niz, boste izvedeli več o oblazinjenja. 1505 01:11:19,000 --> 01:11:22,330 To je formula najti oblazinjenje. 1506 01:11:22,330 --> 01:11:23,610 >> Pomembno je vedeti - 1507 01:11:23,610 --> 01:11:29,720 Ko spremenite velikost bitno sliko datoteko, spremembe oblazinjenja. 1508 01:11:29,720 --> 01:11:31,970 Ko spremenite velikost datoteko, spremembe oblazinjenja. 1509 01:11:31,970 --> 01:11:34,310 To se ne bo nikoli večja od 3 - 1510 01:11:34,310 --> 01:11:36,510 da bo od 0 do 3, vključujoča. 1511 01:11:36,510 --> 01:11:38,930 Toda, ko spremenite velikost nekaj, spremembe oblazinjenje. 1512 01:11:38,930 --> 01:11:47,100 >> Če imam samo eno piko v tej vrstici, sem Potrebujem tri bajte oblazinjenja, saj 1513 01:11:47,100 --> 01:11:51,190 Vsaka vrstica mora biti mnogokratnik štirih bajte v bitne datoteke. 1514 01:11:51,190 --> 01:11:56,120 Ampak, če sem ga podvojili, da gredo iz enega piksla dvema piksel, od katerih je vsak, 1515 01:11:56,120 --> 01:11:59,510 recimo, je bajt, potem moram dva bajta oblazinjenja, da bi 1516 01:11:59,510 --> 01:12:00,970 , ki je enak štiri. 1517 01:12:00,970 --> 01:12:04,200 >> Torej, ko sem spremeniti velikost nečesa, Moram spremeniti višino 1518 01:12:04,200 --> 01:12:06,551 oblazinjenja imam. 1519 01:12:06,551 --> 01:12:08,100 Ali to smiselno za vsakogar? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Nato smo Ponovil nad vsako vrstico ali prek vseh vrstic. 1522 01:12:18,720 --> 01:12:21,400 In potem smo Ponovil skozi vsak stolpec v vsaki vrstici. 1523 01:12:21,400 --> 01:12:25,330 Mi zdravljenju te bitne slike kot omrežje, kot smo obdelan 1524 01:12:25,330 --> 01:12:26,490 odbor v 15. 1525 01:12:26,490 --> 01:12:29,200 >> Tako kot smo se zdravijo opeke, ko jih natisnjena na zaslonu. 1526 01:12:29,200 --> 01:12:31,350 Mreža vrsticah in stolpcih. 1527 01:12:31,350 --> 01:12:32,350 Potem pa - smo videli tole. 1528 01:12:32,350 --> 01:12:33,840 Mi pravzaprav le ta kodirana. 1529 01:12:33,840 --> 01:12:35,780 Ustvarili smo nekaj začasnega skladiščenja. 1530 01:12:35,780 --> 01:12:38,710 Prebrali smo tam, in potem smo ga napisali ven. 1531 01:12:38,710 --> 01:12:42,680 To je natanko tisto, kar smo pravkar storil. 1532 01:12:42,680 --> 01:12:46,760 >> Dalje, ker sem rekel, vsaka vrstica konča v neki oblazinjenja, smo 1533 01:12:46,760 --> 01:12:48,260 preskočite ta oblazinjenje - 1534 01:12:48,260 --> 01:12:51,000 stara oblazinjenje. 1535 01:12:51,000 --> 01:12:52,630 In potem smo jo dodali nazaj. 1536 01:12:52,630 --> 01:12:55,140 V tem primeru smo ustvariti Enako natančna slika. 1537 01:12:55,140 --> 01:12:56,180 Mi samo kopiranje. 1538 01:12:56,180 --> 01:12:57,700 Tako da je ta linija je nekako neumno. 1539 01:12:57,700 --> 01:12:59,660 Lahko bi dobesedno samo dal oblazinjenje prijavite 1540 01:12:59,660 --> 01:13:04,290 >> Ampak, če spremenite velikost datoteke, še vedno hočeš to linijo? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Torej, če bomo spremenili velikost datoteke, Ali smo še vedno želite preskočiti 1543 01:13:11,560 --> 01:13:12,810 nad starim oblazinjenja? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENT 74: Da. 1546 01:13:15,970 --> 01:13:17,090 >> JASON Hirschhorna: Tako delamo. 1547 01:13:17,090 --> 01:13:19,290 Ker To pa ponovno obravnava z izvorno datoteko. 1548 01:13:19,290 --> 01:13:21,570 Mi ne skrbi oblazinjenje Iz izvorne datoteke. 1549 01:13:21,570 --> 01:13:23,410 Želimo, da gredo v naslednjo vrstico. 1550 01:13:23,410 --> 01:13:28,850 Ampak ne bomo preprosto rečeno nazaj stari znesek oblazinjenja. 1551 01:13:28,850 --> 01:13:31,540 Moramo postaviti nazaj nov znesek oblazinjenja. 1552 01:13:31,540 --> 01:13:35,810 >> Torej, ko smo spreminjanje velikosti Datoteka, smo še vedno želijo, da jih preskočite 1553 01:13:35,810 --> 01:13:38,270 oblazinjenje v stari datoteki - tisto, smo berete v od. 1554 01:13:38,270 --> 01:13:40,370 Toda kaj smo pisno, gremo bi morali dati nazaj nekaj drugačen 1555 01:13:40,370 --> 01:13:41,890 Število oblazinjenja, ki Ugotovili smo. 1556 01:13:41,890 --> 01:13:42,780 Ja. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75: Vrstni red teh dveh linije ni važno, kajne? 1558 01:13:44,550 --> 01:13:46,160 Ker ste ravnanje različne datoteke. 1559 01:13:46,160 --> 01:13:46,620 >> JASON Hirschhorna: Točno tako. 1560 01:13:46,620 --> 01:13:48,220 Vrstni red teh dveh linij ni važno. 1561 01:13:48,220 --> 01:13:49,790 Pišemo te vrstice. 1562 01:13:49,790 --> 01:13:51,430 To je tukaj za datoteko smo pisno. 1563 01:13:51,430 --> 01:13:54,370 To je zelo pomembno, da smo dobili Pravilna količina oblazinjenja. 1564 01:13:54,370 --> 01:13:57,560 To ima opravka z datoteko v. 1565 01:13:57,560 --> 01:13:58,560 Želimo, da preskočite desno nad polnilo. 1566 01:13:58,560 --> 01:13:59,470 >> Nočemo, da se glasi - 1567 01:13:59,470 --> 01:14:01,500 če bereš bajt naenkrat smo ne skrbi teh bajti zapolnitve. 1568 01:14:01,500 --> 01:14:04,070 Želimo, da se premaknete na naslednjo vrstico. 1569 01:14:04,070 --> 01:14:11,800 Na koncu tako kot Lucy je dal za nas, zapremo datoteke in vrne 0. 1570 01:14:11,800 --> 01:14:13,890 Torej je to copy.c. 1571 01:14:13,890 --> 01:14:17,850 In smo dejansko napisal - smo porabili večino oddelek to pisanje, v bistvu. 1572 01:14:17,850 --> 01:14:18,740 >> To si je. 1573 01:14:18,740 --> 01:14:22,440 Torej, upam, da boste imeli dober občutek o tem, kaj se dogaja tukaj. 1574 01:14:22,440 --> 01:14:25,890 Velika razlika je, po pravici povedano, je samo ta prvi del, ki se ukvarja z 1575 01:14:25,890 --> 01:14:29,970 posebnosti bitne datoteke. 1576 01:14:29,970 --> 01:14:33,570 Torej imam kot moj naslednji diapozitiv Kaj moramo storiti? 1577 01:14:33,570 --> 01:14:35,510 No, pomislite whodunit. 1578 01:14:35,510 --> 01:14:38,080 >> In za nekoga, ki se glasi prek problem določiti, kaj počnemo 1579 01:14:38,080 --> 01:14:41,410 morate storiti v whodunit? 1580 01:14:41,410 --> 01:14:42,080 Preprosto. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Ali ste vzeli ven del vsake točke, ki označuje rdeča. 1583 01:14:48,570 --> 01:14:49,730 In potem - 1584 01:14:49,730 --> 01:14:50,730 vrsta? 1585 01:14:50,730 --> 01:14:51,860 >> JASON Hirschhorna: OK. 1586 01:14:51,860 --> 01:14:54,460 Torej, vzemite ven del vsakega slikovnih pik, ki označuje rdeča. 1587 01:14:54,460 --> 01:14:57,234 To je blizu, vendar ne vse. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: No, tam je različnih načinov, da to storite. 1589 01:14:59,780 --> 01:14:59,870 >> JASON Hirschhorna: OK. 1590 01:14:59,870 --> 01:15:03,070 Daj mi en način. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: Vzemite vse rdeče, in nato pa poudarjajo, modra in zelena. 1592 01:15:08,240 --> 01:15:10,010 >> JASON Hirschhorna: OK. 1593 01:15:10,010 --> 01:15:11,830 Torej, glede na oba načina - 1594 01:15:11,830 --> 01:15:15,210 zveni kot smo dali to piko, je ima rdečo, modro in zeleno raven. 1595 01:15:15,210 --> 01:15:19,350 Želimo spremeniti relativne ravni rdeča, modra, zelena, odvisno 1596 01:15:19,350 --> 01:15:20,740 na tej piko. 1597 01:15:20,740 --> 01:15:28,380 Kadar je v tem kodeksu, bi morali spremeniti relativna rdeča, modra, zelena 1598 01:15:28,380 --> 01:15:29,720 ravni v danem piko. 1599 01:15:29,720 --> 01:15:30,600 Potem, ko smo ga prebrali - 1600 01:15:30,600 --> 01:15:32,520 preden smo jo napisali? 1601 01:15:32,520 --> 01:15:34,564 Daj mi številko vrstice. 1602 01:15:34,564 --> 01:15:35,950 >> VEČ ŠTUDENTI: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON Hirschhorna: 83. 1604 01:15:37,320 --> 01:15:38,570 Torej tukaj. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Za whodunit, kodo morate pisati bi morali vsi iti tja. 1607 01:15:45,710 --> 01:15:47,640 In to je samo koda morate pisati. 1608 01:15:47,640 --> 01:15:51,520 Ker, kot smo slišali, vse, kar morate storiti, je spremeniti te relativno modro, 1609 01:15:51,520 --> 01:15:54,420 rdeče in zelene ravni v vsak piksel. 1610 01:15:54,420 --> 01:15:58,250 >> Ki ste jo prebrali v, in zdaj si bo to napiši. 1611 01:15:58,250 --> 01:16:03,100 Kako dobim - če imam to stvar imenovano trojno, tukaj, in to je 1612 01:16:03,100 --> 01:16:04,570 tip RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 dobro, če bi pogledal v bmp.h, kaj je RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: To je struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON Hirschhorna: RGBTRIPLE je struct. 1618 01:16:18,900 --> 01:16:22,330 Vidimo, da tukaj dol. 1619 01:16:22,330 --> 01:16:26,600 In tako, če sem hotel, da dostop do, recimo, Rdeča stopnja struct, kako sem 1620 01:16:26,600 --> 01:16:30,005 dostop rdečo stopnjo tega struct? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS šumi] 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 Hirschhorna: Je to res? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENT 79: Ali je treba triple pika, namesto RGBTRIPLE piko? 1626 01:16:53,040 --> 01:16:54,120 >> JASON Hirschhorna: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple je lokalna spremenljivka, tako tu ni nobenih nasvetov tukaj. 1628 01:16:56,700 --> 01:16:58,400 Tako da smo samo uporabo dot zapis. 1629 01:16:58,400 --> 01:17:00,480 To mi bo dal raven rdeče. 1630 01:17:00,480 --> 01:17:06,180 Če želim, da jo spremenite, sem nastavljena je enaka za nekaj drugačnega. 1631 01:17:06,180 --> 01:17:13,190 Torej še enkrat, ta vrstica kode dostopov ta spremenljivka znotraj tega struct, in 1632 01:17:13,190 --> 01:17:15,070 jo lahko nastavite na nekaj novega. 1633 01:17:15,070 --> 01:17:20,040 >> Torej za whodunit, še enkrat, to je, v bistvu, kaj moramo storiti. 1634 01:17:20,040 --> 01:17:21,170 Zelo preprosto. 1635 01:17:21,170 --> 01:17:25,020 Samo spremeniti nekatere relativne ravni, in to je, če je ta koda gre. 1636 01:17:25,020 --> 01:17:27,720 Širino, na drugi strani pa je malo težje. 1637 01:17:27,720 --> 01:17:30,900 V bistvu, velikost je verjetno najtežavnejših del tega problema nastavljena. 1638 01:17:30,900 --> 01:17:32,720 Imamo tri minute, da gredo nad njim. 1639 01:17:32,720 --> 01:17:34,910 >> Ampak še enkrat, smo že pisali večina tega kodeksa, zato smo 1640 01:17:34,910 --> 01:17:36,500 bi morala biti precej pozna. 1641 01:17:36,500 --> 01:17:40,750 Katere so nekatere stvari, ki smo želeli storiti spreminjanje velikosti, če ste prebrali več 1642 01:17:40,750 --> 01:17:43,470 problem nastaviti? 1643 01:17:43,470 --> 01:17:45,290 Če jih daš, smo Lahko govorimo o njih. 1644 01:17:45,290 --> 01:17:47,340 Katere so nekatere stvari, ki jih želijo narediti? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80: Vertikalno - 1646 01:17:47,970 --> 01:17:52,360 tako da boste morali, da jo horizontalno spreminjanje velikosti, ampak ga vertikalno spreminjanje velikosti, kot tudi? 1647 01:17:52,360 --> 01:17:58,475 >> JASON Hirschhorna: Torej, če sva dana pixel, in želimo, da spremenite velikost s 1648 01:17:58,475 --> 01:18:03,460 faktor dva, je treba sedaj spreminjati vodoravno in spreminjati 1649 01:18:03,460 --> 01:18:05,220 navpično. 1650 01:18:05,220 --> 01:18:06,640 Ali to smiselno? 1651 01:18:06,640 --> 01:18:07,060 Ja. 1652 01:18:07,060 --> 01:18:09,300 Tako, da je verjetno Največji izziv. 1653 01:18:09,300 --> 01:18:10,430 In se bova pogovorila o tem, da je v sekundi. 1654 01:18:10,430 --> 01:18:11,065 Ja. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: Tako sem mislil na to je, da potrebuješ tisk ven - 1656 01:18:15,270 --> 01:18:15,490 >> JASON Hirschhorna: Počakajte. 1657 01:18:15,490 --> 01:18:17,580 Ali nam ne pove, kaj si naredil. 1658 01:18:17,580 --> 01:18:20,620 Bomo govorili v logiki. 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 Kaj je bilo vprašanje? 1662 01:18:27,410 --> 01:18:28,892 >> JASON Hirschhorna: Pravkar si dvigne roko. 1663 01:18:28,892 --> 01:18:31,600 Ni bilo vprašanje. 1664 01:18:31,600 --> 01:18:32,520 Dovolite mi, da ga predstavi. 1665 01:18:32,520 --> 01:18:34,560 Naj samo na kratko razpravljali o tem. 1666 01:18:34,560 --> 01:18:38,400 Torej imamo en piksel, želimo je repliciral, tako horizontalno in 1667 01:18:38,400 --> 01:18:39,360 navpično. 1668 01:18:39,360 --> 01:18:48,920 Torej v najboljšem primeru, kaj počnemo tukaj je, da smo preberete v našem pik, smo ga napisali 1669 01:18:48,920 --> 01:18:51,690 Vendar pa je veliko krat. 1670 01:18:51,690 --> 01:18:54,720 >> Toda potem imamo trik tukaj, ker nato pa želimo, da preskočite 1671 01:18:54,720 --> 01:18:57,660 Naslednja linijo in pisati začetek naslednje vrstice. 1672 01:18:57,660 --> 01:19:02,960 Torej, če želimo posnemati tako horizontalno in vertikalno, kar je 1673 01:19:02,960 --> 01:19:05,050 en dober način za to - 1674 01:19:05,050 --> 01:19:06,780 ena dobra, čeprav za to? 1675 01:19:06,780 --> 01:19:11,950 Tako da nam ni treba nenehno iskati okoli naše datoteke postaviti stvari. 1676 01:19:11,950 --> 01:19:14,360 >> To vprašanje se morda ne bo smiseln, vendar mislim, 1677 01:19:14,360 --> 01:19:15,800 odgovorili, da tega ne bo pomagalo. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: Ustvarjanje niz? 1679 01:19:17,210 --> 01:19:20,090 >> JASON Hirschhorna: Torej, kaj mislite posamezne datoteke, kot zapored. 1680 01:19:20,090 --> 01:19:22,550 Razmislimo v smislu vrstic. 1681 01:19:22,550 --> 01:19:26,670 Če imamo prvo vrstico iz naše majhne slike, lahko naredimo to vrstico 1682 01:19:26,670 --> 01:19:30,640 v veliki vrsti od velikega slike, in nato posnemati to vrstico Toda 1683 01:19:30,640 --> 01:19:34,250 večkrat ga je treba ponoviti, namesto da gredo pixel s piko, 1684 01:19:34,250 --> 01:19:37,260 ki postane zmedeno, ko , ki se ukvarjajo z datotekami. 1685 01:19:37,260 --> 01:19:38,730 >> Ker če bomo imeli - 1686 01:19:38,730 --> 01:19:41,260 Jaz sem zmanjkuje prostora. 1687 01:19:41,260 --> 01:19:46,490 Če je to naša slika, in imamo, da en piksel tam, in želimo, da ga 1688 01:19:46,490 --> 01:19:49,840 tam imamo še nekaj stvari da je treba iti tja, ko smo 1689 01:19:49,840 --> 01:19:51,450 pisanju in ustvarjanju naše nove datoteke - 1690 01:19:51,450 --> 01:19:53,250 naša datoteka, ki je dvakrat večji. 1691 01:19:53,250 --> 01:19:56,820 >> Ampak to je res težko z datoteko funkcij preskočiti okoli novih progah 1692 01:19:56,820 --> 01:20:00,260 všeč, nato pa pojdite nazaj in dal stvari tam. 1693 01:20:00,260 --> 01:20:04,500 To je skoraj nemogoče narediti nekaj tako, če je to smiselno. 1694 01:20:04,500 --> 01:20:10,180 Torej, če razmišljamo v smislu vrstic, smo lahko vzamemo vrstico, nato pa jo dal - 1695 01:20:10,180 --> 01:20:11,720 ponovitev vrstic navpično. 1696 01:20:11,720 --> 01:20:15,860 >> In to je, kako smo se ukvarjajo s spreminjanjem velikosti vertikalno namesto horizontalno. 1697 01:20:15,860 --> 01:20:18,810 To je bilo nekako hitro, in malo zmedeno. 1698 01:20:18,810 --> 01:20:22,375 Žal naš čas se je iztekel. 1699 01:20:22,375 --> 01:20:27,340 Stala bom zunaj, za tiste, ki ste tu, ki imate vprašanja o 1700 01:20:27,340 --> 01:20:30,500 Problem set, vključno z izterjavo. 1701 01:20:30,500 --> 01:20:32,320 >> Torej, kaj je preloži za zdaj. 1702 01:20:32,320 --> 01:20:34,480 In spet, če imate kakršnakoli vprašanja, bomo lahko klepetajo zunaj. 1703 01:20:34,480 --> 01:20:38,294