1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON Hirschhorna: Dobrodošli, svatko, u tjedan 6. 3 00:00:09,840 --> 00:00:14,790 Sretan sam što vas sve vidim živ i zdrav Nakon kviza 0, jer znam da je 4 00:00:14,790 --> 00:00:15,810 bio je malo grub. 5 00:00:15,810 --> 00:00:18,370 Ali, srećom, sve vas je nevjerojatno dobro. 6 00:00:18,370 --> 00:00:21,680 I tako to je divno. 7 00:00:21,680 --> 00:00:25,840 Ako ste u mom dijelu, ja sam dao najviše od vas poduprijeti svoje kvizove već. 8 00:00:25,840 --> 00:00:28,050 >> Nekoliko vas, ja sam sastanak nakon predavanja. 9 00:00:28,050 --> 00:00:32,360 A ako ste student i proširenje niste dobili svoj kviz natrag 10 00:00:32,360 --> 00:00:35,490 Ipak, vaša TF vjerojatno radi na tome i ocjenjivanja, i da će ga dobiti natrag 11 00:00:35,490 --> 00:00:36,490 da vas uskoro. 12 00:00:36,490 --> 00:00:39,650 Dakle, moj produžni studenti koji su Zamislite sada - nadam se živjeti - 13 00:00:39,650 --> 00:00:42,880 Ja ću dobiti svoje kvizove kratko, kao dobro. 14 00:00:42,880 --> 00:00:45,670 >> Naš plan za danas je sljedeći. 15 00:00:45,670 --> 00:00:50,170 Prvo, mi ćemo ići preko neke sredstva koja CS50 koje vam pruža. 16 00:00:50,170 --> 00:00:54,590 Mi ćemo ići preko Kviz 0 next, i Ja ću odgovoriti na sva pitanja ikoga 17 00:00:54,590 --> 00:00:57,360 ima o pojedinim problemima. 18 00:00:57,360 --> 00:01:02,050 A onda ćemo se ide preko file I / O i problema postaviti pet. 19 00:01:02,050 --> 00:01:07,360 Tih posljednjih dvije teme će potrajati najveći dio odjeljka danas. 20 00:01:07,360 --> 00:01:11,680 >> Stavio sam taj popis svaki tjedan kao podsjetnik za sve vas, ali od jezgre 21 00:01:11,680 --> 00:01:14,650 poglavlje, imamo samo 90 minuta - mi nisu u mogućnosti pokriti sve ono što sam 22 00:01:14,650 --> 00:01:16,280 bi rado zamijenio za vas. 23 00:01:16,280 --> 00:01:21,170 No mi imamo tonu sredstava za li izvući nakon što ste upoznati 24 00:01:21,170 --> 00:01:24,000 materijal i rad kroz tvoj problem postavlja. 25 00:01:24,000 --> 00:01:30,810 >> Podsjetnik da moram online tekst Kutija, postavljen za vas da ispunite ako 26 00:01:30,810 --> 00:01:33,250 bilo kakve povratne informacije za mene, i pozitivne i 27 00:01:33,250 --> 00:01:35,180 konstruktivna, o dijelu. 28 00:01:35,180 --> 00:01:38,600 Taj URL se nalazi ovdje dolje. 29 00:01:38,600 --> 00:01:43,250 Dakle, molim vas, uzmite trenutak, ako imate bilo povratne informacije, bilo za vrijeme sekcije, 30 00:01:43,250 --> 00:01:48,030 ili poslije, ili nakon što gledati video online, da mi daju svoj komentar. 31 00:01:48,030 --> 00:01:52,100 Ja stvarno poštovati bilo i sve od nje. 32 00:01:52,100 --> 00:01:55,730 >> Dakle, imao sam malih razgovore s puno mojih 33 00:01:55,730 --> 00:01:59,350 studenti tijekom tjedna - kao što sam ruku natrag kvizovi, govori o 34 00:01:59,350 --> 00:02:01,480 Naravno, s obzirom na to što radite. 35 00:02:01,480 --> 00:02:05,120 I jedna tema je došao do više i više u razgovoru o - u 36 00:02:05,120 --> 00:02:05,660 Konkretno - 37 00:02:05,660 --> 00:02:07,710 Problem postavlja. 38 00:02:07,710 --> 00:02:13,090 I ja sam oklopljenog tu temu na brodu upravo sada. 39 00:02:13,090 --> 00:02:16,630 >> U biti, postoji razlika između pretvara u nešto što je 40 00:02:16,630 --> 00:02:19,590 učinio ispravno i nešto da je učinio dobro. 41 00:02:19,590 --> 00:02:22,920 Većina ljudi su radili fantastično u smislu točnosti - 42 00:02:22,920 --> 00:02:25,460 5-a ili 4-a na svim psets. 43 00:02:25,460 --> 00:02:27,930 Većina ljudi su uzimajući one sve vrijeme. 44 00:02:27,930 --> 00:02:31,150 >> Međutim, samo zato što ste učinili nešto dobro ne znači da ste 45 00:02:31,150 --> 00:02:34,450 učinio nešto što je elegantno, ili učinkovito, ili kao čisto kao i ti 46 00:02:34,450 --> 00:02:35,270 je to mogao učiniti. 47 00:02:35,270 --> 00:02:36,790 I to je ono što dizajn - 48 00:02:36,790 --> 00:02:39,230 te u manjoj mjeri, stil - 49 00:02:39,230 --> 00:02:40,450 sjekire su za. 50 00:02:40,450 --> 00:02:45,130 Pa ja sam vas sve gura, a drugi TFS su pritom momci, ne samo pak 51 00:02:45,130 --> 00:02:48,320 u stvari koje su točne, ali zauzvrat u stvarima koje su kodirane dobro. 52 00:02:48,320 --> 00:02:53,060 >> Ne radi nepotrebna ZA petlje, Ne izračunavanje varijable ako je 53 00:02:53,060 --> 00:02:53,800 ne moraju. 54 00:02:53,800 --> 00:02:58,520 Na primjer, kada se prisjeti problema postaviti 4, kada je postavljanjem cigle na 55 00:02:58,520 --> 00:03:03,070 screen, svaki redak - svaka cigla u dao red ima isti y-koordinata - 56 00:03:03,070 --> 00:03:04,390 iste visine koordinirati. 57 00:03:04,390 --> 00:03:07,930 >> Tako da je y-koordinata ne trebaju se izračunati unutar interijera 58 00:03:07,930 --> 00:03:11,070 ugniježđeni for petlje da vjerojatno koristi staviti one cigle na zaslonu. 59 00:03:11,070 --> 00:03:14,030 To samo treba izračunati svaki put prebacio na red, ili 60 00:03:14,030 --> 00:03:15,200 preselio dolje red. 61 00:03:15,200 --> 00:03:19,760 Tako kažu, ako postoji 10 cigle u red, svaki opeke mogu imati isto 62 00:03:19,760 --> 00:03:22,260 y-koordinata, a da je y-koordinata Možete jednostavno može izračunati 63 00:03:22,260 --> 00:03:23,550 jednom za sve one. 64 00:03:23,550 --> 00:03:27,810 >> To ne treba biti izračunat 10 puta, niti da je izračun potreba 65 00:03:27,810 --> 00:03:30,220 dogoditi u stvarni Funkcija poziva - 66 00:03:30,220 --> 00:03:33,020 Nova gracked funkcija poziva. 67 00:03:33,020 --> 00:03:37,820 Dakle, ako je to bilo malo zbunjujuće za vi, više općenito, stvari koje 68 00:03:37,820 --> 00:03:40,730 Ne trebate se dogoditi svaki put idete preko for petlje ne bi trebalo biti 69 00:03:40,730 --> 00:03:42,900 staviti unutar for petlje, i ne treba biti dogoditi svaki put kad odete 70 00:03:42,900 --> 00:03:44,080 preko for petlje. 71 00:03:44,080 --> 00:03:49,270 >> Još jedan dobar dizajn primjer smo vidjeli u tjednu 3 za 15, što bi moglo zadržati 72 00:03:49,270 --> 00:03:50,500 Staza od nule. 73 00:03:50,500 --> 00:03:53,600 Dakle, kada započeti odbora, te spasi - u globalnoj varijabli, možda - 74 00:03:53,600 --> 00:03:56,140 x i y-koordinata nule. 75 00:03:56,140 --> 00:03:57,520 I onda kad god - 76 00:03:57,520 --> 00:04:00,310 u svoj potez funkciji, kad god bi uspješan potez, ažurirate 77 00:04:00,310 --> 00:04:02,040 Položaj nule. 78 00:04:02,040 --> 00:04:06,240 >> To će vas spasiti od vlasništvo to učiniti uklopljeni ZA petlje gledati kroz 79 00:04:06,240 --> 00:04:10,700 ukrcati svaki put u vaš potez funkciji i naći nulu, ili pronaći pločica, 80 00:04:10,700 --> 00:04:12,460 a zatim provjerite što je pokraj njega. 81 00:04:12,460 --> 00:04:16,329 Umjesto toga, imate mjesto nula, možete samo pogledati gore, dolje, 82 00:04:16,329 --> 00:04:21,160 i lijevo i desno od njega, kako bi pronašli pločica što su tražili. 83 00:04:21,160 --> 00:04:24,970 >> Dakle, u smislu programa smo mi pisanju, oni nikad dovoljno velik 84 00:04:24,970 --> 00:04:28,580 da su neki od tih dizajnerskih odluka su stvarno ide na spriječiti vaš 85 00:04:28,580 --> 00:04:31,670 Program, ili bi ga pokrenuti sporije, ili možda čak ponestane memorije. 86 00:04:31,670 --> 00:04:35,030 No, mi smo još uvijek gura vas dečki pisati kao elegantan i 87 00:04:35,030 --> 00:04:36,450 učinkovit kod moguće. 88 00:04:36,450 --> 00:04:39,910 >> Dakle, ako ne završiti pisanje stvari da imaju znatno veći 89 00:04:39,910 --> 00:04:44,660 Opseg, oni će biti napisan s dobrom dizajn osim ispravnim. 90 00:04:44,660 --> 00:04:46,300 Dakle, broj imate Donio to. 91 00:04:46,300 --> 00:04:48,560 To je nešto što mi tražimo - nešto što ćemo dalje 92 00:04:48,560 --> 00:04:49,840 gurati vam dečki na. 93 00:04:49,840 --> 00:04:52,460 >> Ako ste ikada imate bilo kakvih pitanja u vezi dizajn svoj program, slobodno 94 00:04:52,460 --> 00:04:56,870 doprijeti do mene, a ja sam sretan prošetati kroz svoj program s vama, 95 00:04:56,870 --> 00:05:01,320 i istaknuti neke od dizajna Odluke koje ste napravili, i dati vam neke 96 00:05:01,320 --> 00:05:06,240 prijedloge o tome kako bi još bolje dizajnerske odluke. 97 00:05:06,240 --> 00:05:08,870 >> Tako ćemo krenuti dalje to govori o kvizu 0. 98 00:05:08,870 --> 00:05:11,300 Prije nego što smo to učinili, ne bilo tko imate pitanja o tome što 99 00:05:11,300 --> 00:05:14,252 Ja sam do sada pokrivena? 100 00:05:14,252 --> 00:05:21,500 >> [Šuštanje] 101 00:05:21,500 --> 00:05:22,750 >> JASON Hirschhorna: Sedam sekundi. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Pričajmo o kvizu 0 za malo. 104 00:05:24,970 --> 00:05:26,700 Većina od vas ima svoj kviz 0 u leđa. 105 00:05:26,700 --> 00:05:29,820 Ako to ne učinite, nadamo što ga se sjećam malo. 106 00:05:29,820 --> 00:05:34,770 Ali, ako ste uzeti kviz 0, onda također imaju pristup PDF-u online 107 00:05:34,770 --> 00:05:35,890 uzorak rješenja. 108 00:05:35,890 --> 00:05:39,480 >> Da li itko ima bilo kakvih pitanja prije smo skočiti u ovotjednom materijala o 109 00:05:39,480 --> 00:05:41,520 Poseban problem na kvizu 0 - 110 00:05:41,520 --> 00:05:44,630 Zato je odgovor što je to? 111 00:05:44,630 --> 00:05:47,255 Je li bilo tko zbunjen o bilo čemu? 112 00:05:47,255 --> 00:05:50,230 Čak i ako imaš problema u pravu, ali Samo bih htio da to objasni malo 113 00:05:50,230 --> 00:05:52,640 više, ja sam sretna da to učinite sada. 114 00:05:52,640 --> 00:05:57,800 >> Zato sam zatražio da vi dolaze pripremljeni s nekim 115 00:05:57,800 --> 00:05:59,440 misli o kvizu 0. 116 00:05:59,440 --> 00:06:02,660 Pa tko bi želio nam se Počelo je s pitanjem ili 117 00:06:02,660 --> 00:06:04,655 komentar o kvizu 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [PAPIR šuštanje] 120 00:06:10,410 --> 00:06:11,470 >> JASON Hirschhorna: Ne može svatko nije savršeno. 121 00:06:11,470 --> 00:06:12,720 Tako da znam [smijeh] 122 00:06:12,720 --> 00:06:15,950 moraju postojati neka pitanja o kvizu 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: Broj 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON Hirschhorna: Broj 10. 129 00:06:33,560 --> 00:06:35,400 Koji je broj 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: - 131 00:06:35,840 --> 00:06:36,420 >> JASON Hirschhorna: haven't sam - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: to su - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON Hirschhorna: Broj 10 je osam na i - pisanje osam do i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Da. 136 00:06:42,980 --> 00:06:43,630 >> JASON Hirschhorna: OK. 137 00:06:43,630 --> 00:06:47,390 Dakle, još jedno pitanje, što bi moglo imati upitao je ja sam čak i predviđanja? 138 00:06:47,390 --> 00:06:48,630 Odgovor je potvrdan. 139 00:06:48,630 --> 00:06:52,060 U poglavlju prije kviza, pitala sam ti dečki to kod oba Sterling i 140 00:06:52,060 --> 00:06:52,980 osam do ja. 141 00:06:52,980 --> 00:06:54,770 Obojica se dogodilo pojaviti na kvizu. 142 00:06:54,770 --> 00:06:57,510 Dakle, nadamo se, što ste platili pozornost na to. 143 00:06:57,510 --> 00:07:02,520 >> I ako je, onda bi vjerojatno učinio dobro na ta dva. 144 00:07:02,520 --> 00:07:06,030 Ali, osam do i, nismo zapravo kod to je u klasi, ali to je, opet, 145 00:07:06,030 --> 00:07:07,500 pitao na kvizu. 146 00:07:07,500 --> 00:07:13,270 Dakle, nekoliko stvari koje treba uzeti umu kada kodiranje osam do i.. 147 00:07:13,270 --> 00:07:17,320 Prva stvar, po pitanju, bio da li je potrebno da provjerite je li string 148 00:07:17,320 --> 00:07:20,300 bio jednak nuli. 149 00:07:20,300 --> 00:07:28,060 >> Nekoliko ljudi pokušali provjeriti kasnije u programu, ako je nosač bio sam - 150 00:07:28,060 --> 00:07:30,940 tako specifičan lik u koji string - bio je jednak nuli. 151 00:07:30,940 --> 00:07:35,600 Ali zapamtite, to je u biti null - to je dobro razmišljati o 152 00:07:35,600 --> 00:07:39,100 null kao nula pokazivač - kazaljka na nuli - 153 00:07:39,100 --> 00:07:40,920 negdje u memoriji gdje nikada ne može pristupiti. 154 00:07:40,920 --> 00:07:44,730 >> Dakle, ako nešto je jednaka nuli, što Znam da to nije inicijaliziran, 155 00:07:44,730 --> 00:07:46,430 ili tamo nema ničega. 156 00:07:46,430 --> 00:07:50,950 Tako je s char zvijezda, S Nosač i je char. 157 00:07:50,950 --> 00:07:57,410 Tako da ima smisla uspoređivati ​​s. na nulu, ali ne s nosača i na nulu. 158 00:07:57,410 --> 00:07:59,390 Ali opet - tako da je prva stvar da su trebali učiniti - 159 00:07:59,390 --> 00:08:03,510 provjeriti kako bi bili sigurni da ste zapravo dobio pravi niz. 160 00:08:03,510 --> 00:08:08,020 >> Dalje, što ste željeli proći kroz svaki lik u nizu. 161 00:08:08,020 --> 00:08:12,500 A kako bi bilo kao s nosačem Ja, na primjer, ako je i vaš iteratora. 162 00:08:12,500 --> 00:08:17,250 I uzeti taj lik, i dobiti svoju pravu vrijednost. 163 00:08:17,250 --> 00:08:21,800 Vi ste ga pohraniti kao char, ali ASCII vrijednost za nulu - 164 00:08:21,800 --> 00:08:23,010 nula kao lik - 165 00:08:23,010 --> 00:08:25,450 zapravo nije cijeli broj nula. 166 00:08:25,450 --> 00:08:28,700 To je neki drugi broj koji možete pogledati u ASCII tablice. 167 00:08:28,700 --> 00:08:30,790 >> Dakle, jedan od načina da se ispravi za to - Vjerojatno najbolji način za ispravljanje 168 00:08:30,790 --> 00:08:33,760 da - je oduzeti od nje Vrijednost lik - 169 00:08:33,760 --> 00:08:35,140 nula kao lik. 170 00:08:35,140 --> 00:08:38,490 Dakle minus jedan citat, nula, još jedan singl citat. 171 00:08:38,490 --> 00:08:44,620 To će se bez obzira na broj imate kao char, i dobiti ga jednaka 172 00:08:44,620 --> 00:08:46,720 broj kao stvarni cijeli broj. 173 00:08:46,720 --> 00:08:50,300 >> I to je vrlo sličan pristup Mnogo ljudi je u 174 00:08:50,300 --> 00:08:52,800 Problem set 2, s Cezarom i Viginere - 175 00:08:52,800 --> 00:08:55,160 te šifre, kada su ih okreće. 176 00:08:55,160 --> 00:08:59,210 Dakle, nakon što su ga kao broj iz nula do devet, onda - ovisno o 177 00:08:59,210 --> 00:09:02,750 gdje to ide u konačan broj - morate ga pomnožiti 178 00:09:02,750 --> 00:09:04,120 od strane vlasti od 10.. 179 00:09:04,120 --> 00:09:07,340 >> Neki ljudi se preselio s leđa na Prednji i množi pojedinca 180 00:09:07,340 --> 00:09:08,940 Broj od strane vlasti od 10.. 181 00:09:08,940 --> 00:09:11,160 Neki ljudi sele iz naprijed prema natrag - 182 00:09:11,160 --> 00:09:14,430 i tako je najviši naručiti brojeve prva - 183 00:09:14,430 --> 00:09:18,190 i da će spasiti one koji u Globalna varijabla brojač. 184 00:09:18,190 --> 00:09:20,880 I onda svaki put kroz za petlje, pomnožite to div globalni 185 00:09:20,880 --> 00:09:25,640 suprotstaviti varijablu sa 10, da bi Prostor za sljedeći char. 186 00:09:25,640 --> 00:09:28,750 >> Tako da je malo konfuzno, bez ja to pisanje na brodu. 187 00:09:28,750 --> 00:09:31,550 A uzorak otopine je dostupan za vas. 188 00:09:31,550 --> 00:09:32,870 No, to su bile velike stvari smo tražili. 189 00:09:32,870 --> 00:09:36,400 Također provjerite kako biste bili sigurni da je svaki individualni karakter doista bio 190 00:09:36,400 --> 00:09:39,780 lik između nule i devet, a ne neki drugi lik, poput A, 191 00:09:39,780 --> 00:09:41,160 na primjer. 192 00:09:41,160 --> 00:09:43,150 >> To su bile stvari koje su u potrazi jer u tom pitanju. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Je li to odgovor na vaše pitanje? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Da. 196 00:09:49,320 --> 00:09:50,240 >> JASON Hirschhorna: OK. 197 00:09:50,240 --> 00:09:53,940 Ima li kakvih drugih pitanja o kvizu 0? 198 00:09:53,940 --> 00:09:55,440 Što o sastavljanju? 199 00:09:55,440 --> 00:09:56,740 Svatko sastavljanju zar ne? 200 00:09:56,740 --> 00:09:58,370 Ne. 201 00:09:58,370 --> 00:09:58,840 Bilo je - 202 00:09:58,840 --> 00:10:01,010 [Smijeh] 203 00:10:01,010 --> 00:10:03,265 Sva pitanja o 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 >> [PAPIR šuštanje] 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 li broj 7 - slučajna? 210 00:10:14,140 --> 00:10:16,500 >> JASON Hirschhorna: Broj 7. 211 00:10:16,500 --> 00:10:20,670 Broj 7 je dobiti slučajan prirodan broj. 212 00:10:20,670 --> 00:10:21,110 Izvrsno. 213 00:10:21,110 --> 00:10:25,630 Dakle, ti si dao cijeli broj A i cijeli broj b, a želite slučajna 214 00:10:25,630 --> 00:10:28,710 broj između A i B. 215 00:10:28,710 --> 00:10:31,740 Mi zapravo može pisati ovaj na ploča, jer je to jedan 216 00:10:31,740 --> 00:10:33,320 bila je jedna linija koda - 217 00:10:33,320 --> 00:10:34,390 jedan od načina kako to učiniti. 218 00:10:34,390 --> 00:10:37,810 >> Tako smo dati drand kao Funkcija smo mogli koristiti. 219 00:10:37,810 --> 00:10:38,820 A što se drand - 220 00:10:38,820 --> 00:10:40,290 uz pretpostavku da je bio prepun - 221 00:10:40,290 --> 00:10:42,316 što drand vratiti? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: float između 0.0 i 1.0. 223 00:10:44,840 --> 00:10:45,530 >> JASON Hirschhorna: broj - da. 224 00:10:45,530 --> 00:10:47,910 Broj između 0 i 1. 225 00:10:47,910 --> 00:10:51,760 I tako smo B i. 226 00:10:51,760 --> 00:10:55,480 I onda mi imamo slučajni broj između 0 i 1 koju nam je drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Neki ljudi pokušali staviti B ili b minus , ili nešto u onima 229 00:11:06,630 --> 00:11:07,960 zagradi. 230 00:11:07,960 --> 00:11:11,210 To bi značilo da su oni Argumenti za tu funkciju. 231 00:11:11,210 --> 00:11:13,450 >> drand ne poduzimati nikakve argumente - kao getString radi 232 00:11:13,450 --> 00:11:14,330 Ne poduzimati nikakve argumente. 233 00:11:14,330 --> 00:11:16,600 Dakle, to je samo otvorene zagr, u neposrednoj blizini zagr - i to, samo po sebi, je 234 00:11:16,600 --> 00:11:17,330 Funkcija poziva. 235 00:11:17,330 --> 00:11:19,770 I to vam daje broj između 0 i 1. 236 00:11:19,770 --> 00:11:22,820 Naravno, imamo čitav niz da brojevi mogu biti u. 237 00:11:22,820 --> 00:11:28,470 >> Recimo, ako je b 10 i 5, mi stvarno želite broj s nizom od 5. 238 00:11:28,470 --> 00:11:36,940 Dakle, sljedeća stvar koju trebate učiniti je pomnožite to po području B minus. 239 00:11:36,940 --> 00:11:40,380 Dakle, pod pretpostavkom da se množe. 240 00:11:40,380 --> 00:11:42,590 I to će nam dati broj unutar određenog raspona. 241 00:11:42,590 --> 00:11:46,610 I to specifičan asortiman se Razlika između B minus. 242 00:11:46,610 --> 00:11:50,030 >> I na kraju, da će samo dati od - kažu raspon između B minus 243 00:11:50,030 --> 00:11:52,520 je 5, koji će nam dati broj od 0 do 5. 244 00:11:52,520 --> 00:11:56,000 No, ako je u stvari 5, moramo pojačati ovaj raspon do mjesta gdje je 245 00:11:56,000 --> 00:12:01,380 zapravo bi trebala biti, dodajući. 246 00:12:01,380 --> 00:12:02,580 Tako da dobiva logika pravo. 247 00:12:02,580 --> 00:12:03,745 I onda, bi li drugo pitanje? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: Ne. 249 00:12:04,547 --> 00:12:06,010 Osjećam se jako glupo sad. 250 00:12:06,010 --> 00:12:06,405 [Smijeh] 251 00:12:06,405 --> 00:12:06,730 >> JASON Hirschhorna: Ne. 252 00:12:06,730 --> 00:12:08,640 Ne osjećam se jako glupo. 253 00:12:08,640 --> 00:12:10,560 Broj ljudi borili s ovim pitanjem. 254 00:12:10,560 --> 00:12:13,920 A onda, s druge strane pitanje je, drand, što je rekao, daje vam plovak - 255 00:12:13,920 --> 00:12:14,940 vraća plovak. 256 00:12:14,940 --> 00:12:18,020 No, ova funkcija zapravo pitao za cijeli bi se vratio. 257 00:12:18,020 --> 00:12:23,700 >> Ne morate baciti to izričito u cijeli broj, jer je riječ o 258 00:12:23,700 --> 00:12:29,090 Operacije će ga tretirati kao sve A plutaju - kao decimalni broj. 259 00:12:29,090 --> 00:12:31,570 Kao i to će - čak i ako to je cijeli broj, to će 260 00:12:31,570 --> 00:12:32,890 biti ispravno množe. 261 00:12:32,890 --> 00:12:34,000 Sve množenja će raditi. 262 00:12:34,000 --> 00:12:35,060 Vi ne morate ga baci ovdje. 263 00:12:35,060 --> 00:12:36,480 U stvari, da ne bi trebali baciti. 264 00:12:36,480 --> 00:12:37,310 >> To bi - 265 00:12:37,310 --> 00:12:40,750 ako će imati onoliki broj to je između 0 i 1 - 266 00:12:40,750 --> 00:12:42,680 slučajni broj, s pomičnim zarezom, - 267 00:12:42,680 --> 00:12:47,850 tada je ili će biti samo 0 ili 1, tako izgubit ćete sve to precizno. 268 00:12:47,850 --> 00:12:50,120 No, na kraju, kada se vratite, on automatski dobiva 269 00:12:50,120 --> 00:12:51,620 poslao natrag kao cijeli broj. 270 00:12:51,620 --> 00:12:56,870 Dakle, ne morate učiniti se da je bacanje. 271 00:12:56,870 --> 00:13:00,810 >> Dakle, to je bio odgovor na to pitanje, broj 7. 272 00:13:00,810 --> 00:13:02,190 Još neka pitanja na kvizu 0? 273 00:13:02,190 --> 00:13:03,300 Da, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: Kada ćemo koristiti rekurzivna - 275 00:13:05,050 --> 00:13:07,850 kada koristimo iterativni petlje? 276 00:13:07,850 --> 00:13:10,210 >> JASON Hirschhorna: Kad koristite rekurzivna - tako općenito, 277 00:13:10,210 --> 00:13:14,110 prednosti i mane u odnosu na rekurzije iterativni pristup. 278 00:13:14,110 --> 00:13:17,110 Može li itko ponuditi pro ili con? 279 00:13:17,110 --> 00:13:19,460 Molim te? 280 00:13:19,460 --> 00:13:20,140 Ne može bilo tko. 281 00:13:20,140 --> 00:13:22,526 Tko može ponuditi pro ili con? 282 00:13:22,526 --> 00:13:26,963 >> [PAPIR šuštanje] 283 00:13:26,963 --> 00:13:29,730 >> STUDENTSKI 1: Rekurzivna je manje kodiranje - manje tipkati? 284 00:13:29,730 --> 00:13:33,170 >> JASON Hirschhorna: Pa općenito, rekurzija pogotovo, funkcija - 285 00:13:33,170 --> 00:13:35,750 ili algoritam kao pismo vrsta - što se dade 286 00:13:35,750 --> 00:13:37,300 na rekurzivni pristup - 287 00:13:37,300 --> 00:13:40,710 može biti jednostavnije da kod rekurzivno. 288 00:13:40,710 --> 00:13:43,940 I baš više smisla to učiniti rekurzivno. 289 00:13:43,940 --> 00:13:46,230 Dakle, da bi se pro da rekurzije. 290 00:13:46,230 --> 00:13:46,610 Drugima? 291 00:13:46,610 --> 00:13:47,467 Da? 292 00:13:47,467 --> 00:13:49,240 >> STUDENTSKI 2: Con na rekurzije - 293 00:13:49,240 --> 00:13:50,940 Ona koristi više memorije. 294 00:13:50,940 --> 00:13:52,200 >> JASON Hirschhorna: Pa upravo pravo. 295 00:13:52,200 --> 00:13:55,720 Rekurzivna funkcija će držati dodajući stog okviri na stogu. 296 00:13:55,720 --> 00:13:59,690 Dakle, ako ste s radom na puno brojeva, te moraju zvati 297 00:13:59,690 --> 00:14:02,560 funkcionirati puno, onda ćete sigurno zauzimaju više memorije, dok je 298 00:14:02,560 --> 00:14:05,810 iterativni pristup samo će staviti jedan stog okvir na stogu, jer je 299 00:14:05,810 --> 00:14:08,420 sve to se događa u jednoj funkciji. 300 00:14:08,420 --> 00:14:11,010 >> Sve ostale prednosti i mane? 301 00:14:11,010 --> 00:14:11,500 Da. 302 00:14:11,500 --> 00:14:12,550 >> STUDENT 3: Pros za rekurzije. 303 00:14:12,550 --> 00:14:15,950 Ne morate odrediti u unaprijed koliko puta 304 00:14:15,950 --> 00:14:17,660 Kod morao ponoviti. 305 00:14:17,660 --> 00:14:22,810 Što može imati unaprijed određeni broj Vrijeme koje morate ponoviti, a zatim 306 00:14:22,810 --> 00:14:26,420 rekurzija je bolje, jer je to traje taj rezultat. 307 00:14:26,420 --> 00:14:27,780 >> JASON Hirschhorna: Mislim da je to istina. 308 00:14:27,780 --> 00:14:30,770 Ali mislim da je u oba slučaja Vi nikada ne bi - 309 00:14:30,770 --> 00:14:33,290 vjerojatno će dobiti neki Ulaz od korisnika. 310 00:14:33,290 --> 00:14:35,990 Ili ova funkcija će imati neki ulaz kako bi se utvrdilo koliko je puta 311 00:14:35,990 --> 00:14:36,730 treba pokrenuti. 312 00:14:36,730 --> 00:14:39,520 Dakle, općenito, ne bi teško kod - čak iu iterativni pristup - kako 313 00:14:39,520 --> 00:14:40,940 mnogo puta da je petlje treba pokrenuti. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Jeste li imali još jedan ste bili razmišljam o, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Dakle, oni su vjerojatno dvije - 318 00:14:51,650 --> 00:14:54,370 Najveći pro i najveći con se rekurzivna odnosu 319 00:14:54,370 --> 00:14:57,080 iterativni pristup. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Bilo što drugo na kvizu 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Idemo dalje. 324 00:15:09,920 --> 00:15:15,260 File I / O. Tu je prekrasan kratko ovaj tjedan na datoteci I / O koja nadam 325 00:15:15,260 --> 00:15:19,270 ste gledali višekratnik puta, i divio. 326 00:15:19,270 --> 00:15:22,910 Puno posla je otišao u to, a ja sam Čuo je suludo korisno. 327 00:15:22,910 --> 00:15:25,740 Također sam uključen link na ovaj slajd, u slučaju da niste imali 328 00:15:25,740 --> 00:15:29,160 šanse da ga gledaju 10 puta. 329 00:15:29,160 --> 00:15:35,280 >> Dakle, mi ćemo ukratko ići preko glavna koraka do otvaranja i rada 330 00:15:35,280 --> 00:15:38,400 s datotekama, a zatim ćemo zaroniti u problem kodiranja prije 331 00:15:38,400 --> 00:15:40,400 Razmatrajući problem set. 332 00:15:40,400 --> 00:15:44,330 Pa opet, ja ću staviti ovo na zaslon, ali ja ću govoriti za 333 00:15:44,330 --> 00:15:47,630 Samo minutu o tome što smo radiš ovdje s datotekom I/O-- 334 00:15:47,630 --> 00:15:49,090 Što to znači? 335 00:15:49,090 --> 00:15:55,280 >> To znači da možemo stvoriti našu programi, a zatim su naše programe 336 00:15:55,280 --> 00:16:00,370 izlaz, a nisu napravili nikakav utjecaj na svijet izvan našeg programa. 337 00:16:00,370 --> 00:16:04,630 No, kada smo počeli raditi s datotekama - i čitajući ih i stvarajući 338 00:16:04,630 --> 00:16:10,460 ih - možemo imati neki utjecaj na svijet izvan našeg programa. 339 00:16:10,460 --> 00:16:15,440 >> Baš kao i ako Microsoft Word nije bio u mogućnosti kako bi bilo Word dokumenata, a zatim 340 00:16:15,440 --> 00:16:18,710 kada Microsoft Word prestati, sve svoje Rad bi otišao, a to bi 341 00:16:18,710 --> 00:16:19,740 stvarno biti beskoristan. 342 00:16:19,740 --> 00:16:23,620 Mi u konačnici ne želim biti u mogućnosti pisati programe koji mogu utjecati na 343 00:16:23,620 --> 00:16:31,350 svijet oko njih, i uzimajući u složeni ulazi - u smislu datoteke i 344 00:16:31,350 --> 00:16:37,080 putem datoteka, i stvaranje zanimljiva i uvjerljiv izlazi - 345 00:16:37,080 --> 00:16:39,520 u pogledu različitih tipova datoteka. 346 00:16:39,520 --> 00:16:43,730 >> Dakle, to je razlog zašto smo se počinju naučiti kako raditi s datotekama. 347 00:16:43,730 --> 00:16:47,080 Točnije, što mi je sljedeći. 348 00:16:47,080 --> 00:16:47,680 To je vrlo jednostavno. 349 00:16:47,680 --> 00:16:51,530 Postoji samo nekoliko koraka, a Oni su navedeni ovdje na ovom kodu. 350 00:16:51,530 --> 00:16:55,130 Tako ćemo proći kroz ovaj kod redak po redak. 351 00:16:55,130 --> 00:16:57,630 >> Prvo, vidjet ćete istaknuo - 352 00:16:57,630 --> 00:17:01,330 kada radite s datotekom, Bez obzira na vrstu datoteke je, 353 00:17:01,330 --> 00:17:02,670 morate ga otvoriti. 354 00:17:02,670 --> 00:17:05,130 A da je s pozivom na fopen - 355 00:17:05,130 --> 00:17:05,950 upravo ovdje. 356 00:17:05,950 --> 00:17:07,980 Ti su naziv datoteke. 357 00:17:07,980 --> 00:17:11,930 Ako datoteka nije u telefonskom imeniku, ili mapu gdje ovaj program 358 00:17:11,930 --> 00:17:15,910 životi, onda također treba uključiti Put do mjesta gdje da je datoteka. 359 00:17:15,910 --> 00:17:19,099 >> Mi ćemo pretpostaviti da je ovaj spis pod nazivom "text.txt" - 360 00:17:19,099 --> 00:17:24,220 Jednostavan tekstualni dokument - u iste mape ovom programu. 361 00:17:24,220 --> 00:17:26,859 Dakle, to je još jedna stvar koju treba imati na um - da, ako želite otvoriti datoteku 362 00:17:26,859 --> 00:17:30,050 negdje drugdje, što je zapravo potrebno uključiti svoje mjesto. 363 00:17:30,050 --> 00:17:33,520 >> Drugo, možete proći argument da fopen, i to je ono što želim učiniti 364 00:17:33,520 --> 00:17:34,620 s datotekom. 365 00:17:34,620 --> 00:17:38,450 Postoje tri glavna argumenta da ti ćeš proći na fopen. 366 00:17:38,450 --> 00:17:40,060 Tko mi može dati ta tri? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Tko mi može dati jedan od njih? 369 00:17:47,130 --> 00:17:48,130 Da. 370 00:17:48,130 --> 00:17:50,010 >> STUDENT 4: naziv datoteke? 371 00:17:50,010 --> 00:17:50,440 >> JASON Hirschhorna: Žao mi je. 372 00:17:50,440 --> 00:17:55,490 Tri glavne argumente možete proći kao drugi argument da fopen. 373 00:17:55,490 --> 00:17:57,060 U pravu si - ime datoteke je prvi argument. 374 00:17:57,060 --> 00:18:01,620 No, drugi argument da su fopen uglavnom tri žice, i - da. 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: ako želite dodajte u datoteku koja već postoji. 378 00:18:06,840 --> 00:18:07,810 >> STUDENTSKA 5: R za čitanje. 379 00:18:07,810 --> 00:18:09,930 >> JASON Hirschhorna: R, ako želite pročitati iz datoteke. 380 00:18:09,930 --> 00:18:10,670 >> STUDENTSKA 6: W za pisanje. 381 00:18:10,670 --> 00:18:12,840 >> JASON Hirschhorna: I w, ako želim pisati u datoteku. 382 00:18:12,840 --> 00:18:17,570 Dakle, u ovom slučaju, pišemo u datoteku, tako da imamo w. 383 00:18:17,570 --> 00:18:22,360 Možete ga otvoriti, te isto tako morati spasiti datoteku negdje, i da je s 384 00:18:22,360 --> 00:18:26,000 Kod na lijevoj strani operator pridruživanja - 385 00:18:26,000 --> 00:18:31,220 Ja sam stvaranje pokazivač na datoteku zove, u ovom slučaju, datoteke. 386 00:18:31,220 --> 00:18:36,070 >> Nećemo se brinuti što to sve kape SLIKA stvar. 387 00:18:36,070 --> 00:18:40,600 Dovoljno je reći, to je dugi tok jedinica i nula. 388 00:18:40,600 --> 00:18:44,970 A to je kako ćemo to rade i razumijem ga. 389 00:18:44,970 --> 00:18:47,300 >> Sljedeća stvar koju trebate učiniti - a ovo je nevjerojatno važno - 390 00:18:47,300 --> 00:18:49,070 svaki put kad otvorite datoteku - 391 00:18:49,070 --> 00:18:54,250 Zapravo, svaki put kad kontaktirate malloc, za Na primjer, i dobiti neke memorije i pokušati 392 00:18:54,250 --> 00:18:57,980 i spremiti ga u pokazivač, uvijek želite provjeriti kako bi bili sigurni da je ta 393 00:18:57,980 --> 00:19:00,230 Funkcija nisu vratili null. 394 00:19:00,230 --> 00:19:05,230 >> Dakle, u ovom slučaju, mi smo provjeru napraviti sigurni da smo zapravo otvorio 395 00:19:05,230 --> 00:19:10,230 podnijeti ispravno, a tu je pogreška u našem programu. 396 00:19:10,230 --> 00:19:15,160 Zatim, nakon što smo provjeriti kako bi bili sigurni da imamo radnu datoteku, možemo 397 00:19:15,160 --> 00:19:18,520 pisati ili čitati iz, ili dodati u datoteku. 398 00:19:18,520 --> 00:19:24,270 U ovom slučaju, ja sam jednostavno ispis jedan redak na ovu sliku. 399 00:19:24,270 --> 00:19:25,450 >> Kako ću znati da? 400 00:19:25,450 --> 00:19:27,990 Pa, ja sam koristeći ovu funkciju zove fprintf. 401 00:19:27,990 --> 00:19:30,970 Sve funkcije koje će se koristiti prilikom snimanja, ili čitanje iz, ili 402 00:19:30,970 --> 00:19:34,950 manipulira datoteke će biti sličan Funkcije koje ste vidjeli prije, ali 403 00:19:34,950 --> 00:19:38,420 početi sa slovom F, stoji za datoteku. 404 00:19:38,420 --> 00:19:43,440 I fprintf, za razliku od našeg normalnog tiska app, traje jedan dodatni argument, 405 00:19:43,440 --> 00:19:47,800 i da je datoteka u kojoj ste želite ispisati ovu liniju. 406 00:19:47,800 --> 00:19:50,640 >> Nemam ništa za Pravo ohai. 407 00:19:50,640 --> 00:19:52,860 Nemam treći Argument za printf - 408 00:19:52,860 --> 00:19:57,030 ili drugi argument za printf, Treći argument da fprintf, jer sam 409 00:19:57,030 --> 00:19:59,480 Nemam ja rezerviranih mjesta ovdje. 410 00:19:59,480 --> 00:20:01,070 Neću uključujući sve varijable. 411 00:20:01,070 --> 00:20:06,070 Ali opet, fprintf i sve ove datoteke Funkcije koje rade s datotekama 412 00:20:06,070 --> 00:20:09,820 općenito će morati datoteku na kojem oni djeluju. 413 00:20:09,820 --> 00:20:15,960 >> Konačno, posljednja važna stvar za učiniti je zatvoriti datoteku, baš kao i 414 00:20:15,960 --> 00:20:19,530 s - kad god smo malloc nešto, želimo nešto besplatno, ne bismo 415 00:20:19,530 --> 00:20:22,730 imaju otjecanje memorije - želimo zatvoriti našu datoteku. 416 00:20:22,730 --> 00:20:28,180 Ako ovaj program je izašao bez zatvaranja datoteka, izgledi su ništa ne bi ići 417 00:20:28,180 --> 00:20:30,050 u redu, pogotovo ako je to je mala datoteka. 418 00:20:30,050 --> 00:20:35,020 >> No, to je svakako dobra stila i praksa da se uvijek zatvoriti datoteku 419 00:20:35,020 --> 00:20:38,050 kad ste gotovi. 420 00:20:38,050 --> 00:20:43,630 Tako da je osnove datoteci I / O. Vjerojatno ste vidjeli da je prije, ili 421 00:20:43,630 --> 00:20:45,710 ga gledao u toj fantastičnoj Short. 422 00:20:45,710 --> 00:20:48,410 Da li itko ima bilo kakvih pitanja, prije idemo u neke prakse kodiranje 423 00:20:48,410 --> 00:20:51,800 probleme o datoteci I / O ili koraka sam samo otišao? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [PREPISIVANJE ZVUČI] 426 00:21:03,162 --> 00:21:04,150 >> JASON Hirschhorna: Dali Imam pitanje, 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 Ja ću čekati još sedam sekundi. 430 00:21:06,746 --> 00:21:07,590 [Smijeh] 431 00:21:07,590 --> 00:21:08,620 To je jako dobar savjet. 432 00:21:08,620 --> 00:21:10,750 Vi dečki jednostavno ne vole postavljati pitanja. 433 00:21:10,750 --> 00:21:11,660 To je u redu. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Dakle, naš prvi praksa je problem, mi smo će udvostručiti funkciju 436 00:21:17,620 --> 00:21:22,330 alat naredbenog retka koji vjerojatno koristiti prije - primjerak - 437 00:21:22,330 --> 00:21:23,500 alat za kopiranje. 438 00:21:23,500 --> 00:21:28,050 Ako ste tip CP i onda to prođe dva Argumenti u svoj terminal, možete 439 00:21:28,050 --> 00:21:28,980 kopirati datoteku. 440 00:21:28,980 --> 00:21:31,220 I to je ono što mi se događa pisati upravo sada. 441 00:21:31,220 --> 00:21:35,830 >> Pa opet, iščitavanja ovog slajda, ja bih što napisati program koji traje 442 00:21:35,830 --> 00:21:38,130 dva i samo dva naredbenog retka argumenti - 443 00:21:38,130 --> 00:21:40,750 izvorna datoteka i odredišna datoteka - 444 00:21:40,750 --> 00:21:44,590 i kopira sadržaj izvora podnijeti na odredište datoteke 445 00:21:44,590 --> 00:21:46,960 jedan bajt odjednom. 446 00:21:46,960 --> 00:21:48,510 Dakle, to je puno za tražiti. 447 00:21:48,510 --> 00:21:52,200 >> Opet, dobar pristup za to je da Ne ide ravno u C kod, ali 448 00:21:52,200 --> 00:21:54,280 to break down u nekoliko koraka. 449 00:21:54,280 --> 00:21:58,400 Prvo, razmislite o logici - točno ono što ja tražim da učinite - 450 00:21:58,400 --> 00:22:00,620 i razumjeti sve koraci prema tom problemu. 451 00:22:00,620 --> 00:22:04,410 Ne u C, samo u nekom pseudocode, ili čak i mentalni model 452 00:22:04,410 --> 00:22:06,030 što se događa. 453 00:22:06,030 --> 00:22:10,050 >> Zatim, nakon što su pseudocode dolje, shvatiti kako pseudocode 454 00:22:10,050 --> 00:22:14,600 Karte na alate i stvari koje smo naučili koristiti u C. 455 00:22:14,600 --> 00:22:19,070 >> I na kraju, nakon što su sve to zajedno, možete kodirati problem. 456 00:22:19,070 --> 00:22:23,370 Uzmi 5 do 10 minuta da raditi na ovom problemu. 457 00:22:23,370 --> 00:22:25,800 Ja ću staviti upute vratio se u sekundi. 458 00:22:25,800 --> 00:22:27,990 A onda ćemo ići preko pseudocode, a kod 459 00:22:27,990 --> 00:22:29,230 to živjeti kao grupa. 460 00:22:29,230 --> 00:22:31,640 >> Ako imate bilo kakvih pitanja, dok ste raditi na tome, slobodno podizanje 461 00:22:31,640 --> 00:22:34,260 tvoja ruka, i ja ću doći okolo i odgovoriti na njih. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> STUDENTSKA 7: Mogu li swipe komad papira? 464 00:22:39,330 --> 00:22:41,537 >> JASON Hirschhorna: Što je bilo? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [PREPISIVANJE ZVUČI] 467 00:26:48,043 --> 00:26:48,730 >> JASON Hirschhorna: OK. 468 00:26:48,730 --> 00:26:51,710 Idemo preko pseudocode prvi, a onda ću vam dati par više 469 00:26:51,710 --> 00:26:52,960 minuta do kraja kodiranja. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Tko bi htio da me počnete s prve crte 472 00:26:58,650 --> 00:27:00,030 pseudocode za tu funkciju? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> STUDENTSKA 8: Provjerite kako bi bili sigurni da je što su dobili dvije datoteke. 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 A ako nismo? 478 00:27:22,990 --> 00:27:25,974 >> STUDENTSKA 8: Ja bih se vratiti 0.. 479 00:27:25,974 --> 00:27:27,872 >> JASON Hirschhorna: Trebamo se vratiti na 0? 480 00:27:27,872 --> 00:27:30,182 >> STUDENTSKA 8: Povratak - 481 00:27:30,182 --> 00:27:30,650 zatamnjenja. 482 00:27:30,650 --> 00:27:30,850 Oprostite. 483 00:27:30,850 --> 00:27:31,210 >> JASON Hirschhorna: Da. 484 00:27:31,210 --> 00:27:32,710 Vjerojatno ne 0. 485 00:27:32,710 --> 00:27:34,680 Budući da 0 znači sve je bilo dobro. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Dakle, to je prva linija od pseudocode. 488 00:27:36,730 --> 00:27:38,715 Tko ima drugu liniju pseudocode? 489 00:27:38,715 --> 00:27:40,630 >> STUDENTSKA 9: Otvorena su i slika? 490 00:27:40,630 --> 00:27:41,880 >> JASON Hirschhorna: Otvorite obje datoteke. 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 >> STUDENTSKA 10: Provjerite ako je datoteka NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON Hirschhorna: Provjerite kako bi Sigurno nisi ni NULL. 496 00:28:12,580 --> 00:28:15,800 Kao na stranu - 497 00:28:15,800 --> 00:28:17,540 Slash 0 - 498 00:28:17,540 --> 00:28:18,887 to je NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENTSKA 11: Ne 500 00:28:20,080 --> 00:28:21,190 >> JASON Hirschhorna: To nije NULL. 501 00:28:21,190 --> 00:28:23,400 To se zove NULL terminator. 502 00:28:23,400 --> 00:28:25,580 To je zapravo napisane sa samo jednim l. 503 00:28:25,580 --> 00:28:28,580 Pa ček nešto protiv toga - to je zapravo lik - 504 00:28:28,580 --> 00:28:31,710 pa ček nešto protiv da se nije isto što i provjere da li je 505 00:28:31,710 --> 00:28:32,690 jednaka NULL. 506 00:28:32,690 --> 00:28:34,100 >> I neki ljudi - 507 00:28:34,100 --> 00:28:36,040 na svojim kvizovima i njihov problem setovi - imaju 508 00:28:36,040 --> 00:28:36,890 dvije od onih zbunjeni. 509 00:28:36,890 --> 00:28:38,830 No, dvije od onih koji su u stvari drugačije. 510 00:28:38,830 --> 00:28:40,220 Jedan završava niz - 511 00:28:40,220 --> 00:28:43,210 jedan je kazaljka na 0. 512 00:28:43,210 --> 00:28:46,490 >> STUDENTSKA 12: Zašto se ne bi li provjerili da bi bili sigurni da datoteke nisu NULL 513 00:28:46,490 --> 00:28:48,670 Prije nego li ih otvoriti? 514 00:28:48,670 --> 00:28:54,772 >> JASON Hirschhorna: Dakle otvoreno štedi nešto u toj datoteci. 515 00:28:54,772 --> 00:28:57,780 I ako se vrati ovdje - 516 00:28:57,780 --> 00:28:59,520 tako da je ovo linija - fopen - 517 00:28:59,520 --> 00:29:05,300 će vam dati adresu i trgovinu da je adresa u datoteci ako se to radi. 518 00:29:05,300 --> 00:29:07,650 Ako to ne radi, to će pohraniti NULL - 519 00:29:07,650 --> 00:29:08,020 >> STUDENTSKA 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Jesam te. 522 00:29:08,500 --> 00:29:09,050 >> JASON Hirschhorna: U datoteci. 523 00:29:09,050 --> 00:29:11,990 Tako da se ne može provjeriti NULL Prije nego što ste ih otvorili. 524 00:29:11,990 --> 00:29:13,520 NULL znači nešto što nije učinio ispravno raditi. 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 Dakle, provjerite je li niti je? 528 00:29:22,590 --> 00:29:23,200 Ili? 529 00:29:23,200 --> 00:29:23,770 Što mi mislimo? 530 00:29:23,770 --> 00:29:24,310 Ići ćemo s tim. 531 00:29:24,310 --> 00:29:24,520 >> STUDENTSKA 13: Je. 532 00:29:24,520 --> 00:29:25,020 >> JASON Hirschhorna: Je li? 533 00:29:25,020 --> 00:29:25,930 Niti je? 534 00:29:25,930 --> 00:29:26,350 >> STUDENTSKA 13: Je. 535 00:29:26,350 --> 00:29:26,390 >> JASON Hirschhorna: OK. 536 00:29:26,390 --> 00:29:28,510 Čini se da su neki konsenzus o tome. 537 00:29:28,510 --> 00:29:30,520 Niti je NULL. 538 00:29:30,520 --> 00:29:32,250 OK, sljedeća linija pseudocode. 539 00:29:32,250 --> 00:29:33,600 Tko mi nije dao liniju još? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Mi ćemo čekati. 542 00:29:38,295 --> 00:29:39,020 Da. 543 00:29:39,020 --> 00:29:40,895 >> STUDENTSKA 14: Morate pročitati od prve datoteke? 544 00:29:40,895 --> 00:29:42,290 >> JASON Hirschhorna: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENTSKA 14: Ili ćemo koristiti fscanf ili nešto kao da je prvi datoteku? 546 00:29:46,240 --> 00:29:50,650 >> JASON Hirschhorna: Dakle, želimo čitati od prve datoteke i - 547 00:29:50,650 --> 00:29:51,900 neka je stavi da su upravo ovdje. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Posjeta iz izvorne datoteke. 550 00:30:01,880 --> 00:30:05,370 A onda, što ćemo učiniti nakon što smo čitati iz izvorne datoteke? 551 00:30:05,370 --> 00:30:06,620 Netko drugi? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENTSKA 15: Write u odredište varalica? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON Hirschhorna: Mi pisati odredište varalica, i - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Što još nedostaje? 558 00:30:30,030 --> 00:30:32,460 Netko drugi tko mi nije dao linija koda, ali - od pseudocode. 559 00:30:32,460 --> 00:30:33,510 Da. 560 00:30:33,510 --> 00:30:36,540 >> STUDENTSKA 16: Možda uvijek možete provjeriti da li postoji nešto čitati, 561 00:30:36,540 --> 00:30:37,970 kao sljedeći linije? 562 00:30:37,970 --> 00:30:39,550 To su kao novi redak vidjeti ako ona postoji. 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 journaling softver. 566 00:30:43,120 --> 00:30:43,580 Da? 567 00:30:43,580 --> 00:30:44,960 >> STUDENTSKA 16: Da. 568 00:30:44,960 --> 00:30:48,940 >> JASON Hirschhorna: Pa daju to mi se još jednom. 569 00:30:48,940 --> 00:30:51,640 >> STUDENTSKA 16: Provjerite da li postoji još sljedeća linija iz 570 00:30:51,640 --> 00:30:52,920 izvorna datoteka za čitanje. 571 00:30:52,920 --> 00:30:53,500 >> JASON Hirschhorna: OK. 572 00:30:53,500 --> 00:30:56,060 Dakle, mi ne čitaš linije - su čitanje bajtova ovdje - 573 00:30:56,060 --> 00:30:57,590 ali ti si točna. 574 00:30:57,590 --> 00:31:00,040 Želimo čitati i pisati dok nema više bajtova. 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 I tako to treba stvarno biti razvedena malo, jer oni su tamo ispod. 578 00:31:16,940 --> 00:31:17,470 Zar ne? 579 00:31:17,470 --> 00:31:20,620 Dok smo iz bajtova, idemo u čitati iz izvorne datoteke i pisati 580 00:31:20,620 --> 00:31:22,160 na odredište datoteke. 581 00:31:22,160 --> 00:31:24,510 >> A onda, što je zadnji put Linija pseudocode? 582 00:31:24,510 --> 00:31:26,380 Netko tko nije dao mi nešto još. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENTSKA 17: Zatvaranje datoteke? 585 00:31:30,260 --> 00:31:31,510 >> JASON Hirschhorna: Točno. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Zatvaranje datoteke. 588 00:31:37,450 --> 00:31:38,400 Dakle, tu je naš pseudocode. 589 00:31:38,400 --> 00:31:41,870 Ja ću staviti pseudocode u gedit, a za par minuta smo 590 00:31:41,870 --> 00:31:44,626 će kodirati to zajedno. 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 Neka nam započnete kao skupina. 594 00:33:58,290 --> 00:33:59,940 Nishant, imam svoju novu datoteku. 595 00:33:59,940 --> 00:34:01,130 Upravo sam otvorio ovaj gore. 596 00:34:01,130 --> 00:34:01,880 Untitled Document 1. 597 00:34:01,880 --> 00:34:05,490 Što je prvo što mi je činiti? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Uključi knjižnice? 599 00:34:07,040 --> 00:34:08,219 >> JASON Hirschhorna: OK. 600 00:34:08,219 --> 00:34:11,070 Što knjižnice? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: Stdio.h, stdlib.h, vjerujem? 602 00:34:17,570 --> 00:34:18,000 >> JASON Hirschhorna: OK. 603 00:34:18,000 --> 00:34:21,592 Što je stdlib za? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: Zaboravio sam. 605 00:34:23,010 --> 00:34:23,219 >> JASON Hirschhorna: OK. 606 00:34:23,219 --> 00:34:24,179 Tako su stdio. 607 00:34:24,179 --> 00:34:28,630 Što sam trebao učiniti još prije Ja početi kodiranja? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Napišite zaglavlje? 609 00:34:29,710 --> 00:34:31,830 >> JASON Hirschhorna: Kako ja bi to boje? 610 00:34:31,830 --> 00:34:34,060 >> [ubačenih GLASOVI] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Kako ste ga dobili u boji? 612 00:34:35,040 --> 00:34:38,060 >> JASON Hirschhorna: Kako ja Boja kodiranje? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Ne znam. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Spremi. 616 00:34:39,389 --> 00:34:39,929 >> JASON Hirschhorna: Spremi. 617 00:34:39,929 --> 00:34:40,270 Da. 618 00:34:40,270 --> 00:34:41,760 I treba ga spremiti kao. C. 619 00:34:41,760 --> 00:34:46,239 Tako ga spremiti na desktop kao cp.c. 620 00:34:46,239 --> 00:34:47,280 Sweet. 621 00:34:47,280 --> 00:34:51,199 A ako želim dobiti punu stil poena, što bih 622 00:34:51,199 --> 00:34:53,085 su na vrhu? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Možete napisati svoje ime i prezime, ime programa, te u svrhu 624 00:34:58,390 --> 00:34:59,640 programa, kao i? 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 Izvrsno. 628 00:35:10,470 --> 00:35:12,940 Dakle, što ste nas započela savršeno. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 ćemo također pisati - 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 Dakle, mislim da sam sve skupa ići. 634 00:35:33,520 --> 00:35:38,003 Tko ima prvu liniju koda za mene - ili su prva linija kod koje 635 00:35:38,003 --> 00:35:41,280 bit će potrebno zadovoljiti naš prvi komentirati pseudocode? 636 00:35:41,280 --> 00:35:41,985 Vi. 637 00:35:41,985 --> 00:35:48,780 >> STUDENTSKA 18: Ne bi bilo int argc, a zatim char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON Hirschhorna: Mislim u pravu si. 639 00:35:49,490 --> 00:35:56,270 Promijenimo to int main, otvorena zagrada, int argc, zarez, char * argv? 640 00:35:56,270 --> 00:35:57,150 Kao da je? 641 00:35:57,150 --> 00:35:57,410 >> STUDENTSKA 18: Nosači. 642 00:35:57,410 --> 00:35:58,260 >> JASON Hirschhorna: Nosači. 643 00:35:58,260 --> 00:35:59,860 Otvorena zagrada, u neposrednoj blizini zagrada, blizu roditelja. 644 00:35:59,860 --> 00:36:00,240 Savršeno. 645 00:36:00,240 --> 00:36:02,160 Sada mogu uzeti argumente naredbenog retka. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Osigurati ćemo dati dvije datoteke. 648 00:36:04,250 --> 00:36:07,905 Vi mi možete dati da je kao dobro. 649 00:36:07,905 --> 00:36:09,180 >> STUDENTSKA 18: Ako argc - 650 00:36:09,180 --> 00:36:11,060 ovo ne jednaka 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON Hirschhorna: Ako otvorenih zagrada argc ne jednaka 3? 652 00:36:14,360 --> 00:36:16,970 >> STUDENTSKA 18: Da, vraćate 1 ili ništa. 653 00:36:16,970 --> 00:36:17,460 >> JASON Hirschhorna: Žao mi je. 654 00:36:17,460 --> 00:36:19,120 >> STUDENTSKA 18: Povratak 1 ili ništa. 655 00:36:19,120 --> 00:36:20,270 >> JASON Hirschhorna: Povratak jedan. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Velika. 658 00:36:22,970 --> 00:36:24,290 Otvorite obje datoteke. 659 00:36:24,290 --> 00:36:26,160 Tko će mi pomoći otvoriti obje datoteke? 660 00:36:26,160 --> 00:36:28,125 Tko mi nije dao kod još uvijek? 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: Pa svi kape F-I-L-E izvor zvijezda. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON Hirschhorna: Idem izvaditi vokala. 666 00:36:40,920 --> 00:36:41,570 Oni su super. 667 00:36:41,570 --> 00:36:42,716 To je kao Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENTSKA 18: Jednako fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON Hirschhorna: Jednako fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENTSKA 18: Otvorene zagrada, argv, otvorena zagrada. 671 00:36:49,870 --> 00:36:50,055 >> JASON Hirschhorna: Čekaj. 672 00:36:50,055 --> 00:36:50,240 Oprostite. 673 00:36:50,240 --> 00:36:51,050 Otvorena zagrada. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENTSKA 18: Da. 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 >> STUDENTSKA 18: Da. 679 00:36:56,140 --> 00:36:58,540 Argv otvorena zagrada 1 - 680 00:36:58,540 --> 00:36:59,730 Da. 681 00:36:59,730 --> 00:37:06,470 A onda zarez, a zatim otvorena bračna citat, r, dvostruki navodnici, 682 00:37:06,470 --> 00:37:08,250 bliski zagrada, zarez. 683 00:37:08,250 --> 00:37:09,450 >> JASON Hirschhorna: Sweet. 684 00:37:09,450 --> 00:37:10,950 A što je s drugim? 685 00:37:10,950 --> 00:37:16,030 >> STUDENTSKA 18: Vrlo slična, ali umjesto S-R-C, što bi to nazvao 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 se sviđa. 688 00:37:17,772 --> 00:37:20,010 >> STUDENTSKA 18: Samo D-S-T. Da. 689 00:37:20,010 --> 00:37:23,057 A onda argv, otvoreno nosač, dva. 690 00:37:23,057 --> 00:37:23,200 Da. 691 00:37:23,200 --> 00:37:26,720 I onda w umjesto r. 692 00:37:26,720 --> 00:37:27,620 Da. 693 00:37:27,620 --> 00:37:29,630 >> JASON Hirschhorna: Velika. 694 00:37:29,630 --> 00:37:31,360 Sljedeća par redaka. 695 00:37:31,360 --> 00:37:34,040 Također, ako netko ima stvari koje treba dodati linije koje smo učinili, slobodno 696 00:37:34,040 --> 00:37:35,690 dodajte i njih. 697 00:37:35,690 --> 00:37:37,520 Provjerite kako bi bili sigurni niti je NULL. 698 00:37:37,520 --> 00:37:41,450 Tko mi može dati kod trebam zadovoljiti tu liniju pseudocode? 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 >> Strijelac: Ako src jednako dosegne NULL ili DST jednako dosegne 702 00:37:58,645 --> 00:38:04,590 NULL, onda ste se vratili - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON Hirschhorna: Što? 705 00:38:07,976 --> 00:38:08,890 >> Strijelac: Povratak dva? 706 00:38:08,890 --> 00:38:09,760 >> JASON Hirschhorna: Povratak dva. 707 00:38:09,760 --> 00:38:14,400 Dakle, ako je otvoren zagr src jednaka jednaka NULL, ili - 708 00:38:14,400 --> 00:38:15,590 što god da thing's - lulu? 709 00:38:15,590 --> 00:38:16,346 Pipe? 710 00:38:16,346 --> 00:38:17,140 Mi ćemo ga nazvati cijevi. 711 00:38:17,140 --> 00:38:22,340 Cijevi, cijevi, DST jednako dosegne NULL, vratiti dva. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Dok smo iz bajtova - 714 00:38:26,060 --> 00:38:29,820 mi vrsta preskočili ovaj korak od pseudocode dio da će ovdje. 715 00:38:29,820 --> 00:38:31,970 >> No, dok smo iz bajtova - Što vam to zvuči? 716 00:38:31,970 --> 00:38:34,680 Koji tip C strukture - 717 00:38:34,680 --> 00:38:36,160 ali ja se ne koriste riječi strukturu, zato jer ćemo početi koristiti 718 00:38:36,160 --> 00:38:37,350 da se u drugim slučajevima - 719 00:38:37,350 --> 00:38:39,495 ali C alat vam to zvuči? 720 00:38:39,495 --> 00:38:39,970 >> STUDENTSKA 19: loop. 721 00:38:39,970 --> 00:38:40,980 >> JASON Hirschhorna: loop. 722 00:38:40,980 --> 00:38:43,060 Zvuči kao petlju. 723 00:38:43,060 --> 00:38:49,670 Dakle, tko mi može dati prvu liniju od petlje kod ovdje? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Također možete odabrati kakvu loop želite, ako mi date 726 00:39:01,980 --> 00:39:03,215 ova linija koda. 727 00:39:03,215 --> 00:39:04,150 Postoje tri vrste. 728 00:39:04,150 --> 00:39:06,530 Ti biraš. 729 00:39:06,530 --> 00:39:08,080 Predložio bih jedan od tih. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Koji ti želiš? 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 jednak nuli. 735 00:39:15,180 --> 00:39:17,360 >> JASON Hirschhorna: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Ovaj dio nisam sigurna. 737 00:39:18,570 --> 00:39:29,080 Ali ja manja od veličine od izvora zvijezda? 738 00:39:29,080 --> 00:39:31,128 Ja nisam siguran u to. 739 00:39:31,128 --> 00:39:32,580 >> JASON Hirschhorna: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Zato što želite veličina datoteke, zar ne? 741 00:39:35,870 --> 00:39:41,090 >> JASON Hirschhorna: Dakle, to vjerojatno neće nam veličinu stvarni 742 00:39:41,090 --> 00:39:43,010 podnijeti u bajtove. 743 00:39:43,010 --> 00:39:47,680 Dakle, što smo drugo mogli učiniti? 744 00:39:47,680 --> 00:39:48,810 Ono što je još jedna vrsta petlje? 745 00:39:48,810 --> 00:39:50,180 Ili bi se trebali držati s for petlje? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENTSKA 20: Možete li napraviti while petlja? 748 00:39:57,900 --> 00:40:01,350 A onda, što bi učinio je you'd - 749 00:40:01,350 --> 00:40:03,930 jer imamo char * za datoteku. 750 00:40:03,930 --> 00:40:07,950 Dakle, ako ćemo samo zadržati povećavanjem da dok ćemo naći NULL znak po 751 00:40:07,950 --> 00:40:08,500 kraj njega? 752 00:40:08,500 --> 00:40:11,130 Ili ne, jest da nije kako slika raditi? 753 00:40:11,130 --> 00:40:14,300 >> JASON Hirschhorna: Pa možemo zadržati povećavanjem char * 754 00:40:14,300 --> 00:40:16,340 dok ne nađemo nul - 755 00:40:16,340 --> 00:40:18,580 >> STUDENTSKA 20: U osnovi zadržati ide slovo po slovo dok se ostvario 756 00:40:18,580 --> 00:40:21,250 kraj datoteke. 757 00:40:21,250 --> 00:40:21,600 >> JASON Hirschhorna: Da. 758 00:40:21,600 --> 00:40:22,560 Dakle, to je ono što želimo učiniti. 759 00:40:22,560 --> 00:40:24,545 Želimo zadržati čitanje, karakter po karakteru, dok ne dođemo do 760 00:40:24,545 --> 00:40:25,080 kraj datoteke. 761 00:40:25,080 --> 00:40:25,375 >> STUDENTSKA 20: Da. 762 00:40:25,375 --> 00:40:25,860 Traži - 763 00:40:25,860 --> 00:40:28,540 što je kraj ili znak stop na kraju tekstualnu datoteku. 764 00:40:28,540 --> 00:40:28,620 >> JASON Hirschhorna: OK. 765 00:40:28,620 --> 00:40:30,140 Dakle, kada smo dobili na kraju datoteke - Kako ćemo znati da smo postigli 766 00:40:30,140 --> 00:40:33,200 završetak datoteke? 767 00:40:33,200 --> 00:40:34,710 Ako zovem - 768 00:40:34,710 --> 00:40:35,910 pa neka je korak natrag. 769 00:40:35,910 --> 00:40:37,550 Što je funkcija? 770 00:40:37,550 --> 00:40:39,360 Idemo na ovoj liniji ovdje. 771 00:40:39,360 --> 00:40:40,630 Posjeta iz izvorne datoteke. 772 00:40:40,630 --> 00:40:41,880 Tko mi može dati tu liniju koda? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> STUDENTSKA 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 Što ako želim čitati, vrlo Naime, jedan bajt? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENTSKA 21: Ne znam. 780 00:40:56,860 --> 00:40:57,110 >> JASON Hirschhorna: OK. 781 00:40:57,110 --> 00:40:59,380 Čak i jednostavnije nego fscanf - što je - 782 00:40:59,380 --> 00:41:01,890 Želim čitati iz izvorne datoteke? 783 00:41:01,890 --> 00:41:03,720 Čitati iz izvorne datoteke. 784 00:41:03,720 --> 00:41:04,850 Što je funkcija - da. 785 00:41:04,850 --> 00:41:05,380 >> STUDENTSKA 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 da ćemo staviti s da je jedan za sada. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Kakav argumenata ne fread potrajati? 790 00:41:13,650 --> 00:41:17,410 >> STUDENTSKA 22: Vjerojatno tip datoteke, a zatim mjesto u datoteci? 791 00:41:17,410 --> 00:41:19,550 >> JASON Hirschhorna: Što mogu upisati ovdje shvatiti što tip argumenata 792 00:41:19,550 --> 00:41:20,950 fread traje? 793 00:41:20,950 --> 00:41:23,710 >> VIŠE STUDENTI: Čovjek fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON Hirschhorna: Čovjek fread i fwrite. 795 00:41:24,740 --> 00:41:25,980 Izgleda da su se družiti zajedno. 796 00:41:25,980 --> 00:41:29,589 Dakle fread traje koliko argumente? 797 00:41:29,589 --> 00:41:30,920 >> STUDENTSKA 23: Četiri. 798 00:41:30,920 --> 00:41:32,690 >> JASON Hirschhorna: Potrebno Četiri argumenti. 799 00:41:32,690 --> 00:41:41,100 Potrebno je pokazivač, veličinu, i da stvar, što je čudno, a neki file. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Idemo pročitati o tome ovdje. 802 00:41:43,990 --> 00:41:49,370 "Funkcija fread čita n memb elementi podataka, svaka veličina bajta 803 00:41:49,370 --> 00:41:53,840 dugo, od potoka na koji pokazuje potok, da ih pohranite na mjestu 804 00:41:53,840 --> 00:41:56,170 dao pokazivač. " 805 00:41:56,170 --> 00:41:57,960 >> Dakle, četiri argumenti. 806 00:41:57,960 --> 00:42:04,510 Zašto ne bih samo kopirati ovaj, i zalijepite ga ovdje. 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 Pa tko može započeti ispunjavanjem ti argumenti za mene? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Izvadite prazninu. 812 00:42:17,720 --> 00:42:20,530 Stavite samo src. 813 00:42:20,530 --> 00:42:23,142 Izvadite pokazivač i zvijezdu. 814 00:42:23,142 --> 00:42:26,102 Put src. 815 00:42:26,102 --> 00:42:27,050 Onda - 816 00:42:27,050 --> 00:42:28,500 >> JASON Hirschhorna: Pa ću prestati što postoji, jer to je netočno. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 U pravu si s src, ali gdje src trebao ići? 819 00:42:34,710 --> 00:42:35,960 >> [ubačenih GLASOVI] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON Hirschhorna: To bi trebalo idu ovamo. 822 00:42:41,610 --> 00:42:43,790 To je src - naša src je tipa. 823 00:42:43,790 --> 00:42:44,610 Idemo pogledati ovdje. 824 00:42:44,610 --> 00:42:49,610 To je molba za vrstu datoteke *, mi zapravo ih najčešće vide kao što je to. 825 00:42:49,610 --> 00:42:57,630 Dakle, ovo je molba za argumentom tip datoteke * zove potok koji je src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Koja veličina stvari učiniti želimo čitati? 828 00:43:00,410 --> 00:43:03,340 Dao sam to u Opis problema. 829 00:43:03,340 --> 00:43:04,370 >> STUDENTSKA 24: Jedan bajt u isto vrijeme. 830 00:43:04,370 --> 00:43:05,340 >> JASON Hirschhorna: Jedan bajt. 831 00:43:05,340 --> 00:43:08,205 Kolika je bajt? 832 00:43:08,205 --> 00:43:11,642 Njegova veličina je u bajtove, pa što mogu staviti tamo? 833 00:43:11,642 --> 00:43:12,910 >> STUDENTSKA 25: Jedna. 834 00:43:12,910 --> 00:43:14,730 >> JASON Hirschhorna: Jedan. 835 00:43:14,730 --> 00:43:17,020 Točno. 836 00:43:17,020 --> 00:43:19,940 Njegova veličina je u jedinici bajtu, pa 1 je 1 bajt. 837 00:43:19,940 --> 00:43:22,284 Koliko ih želim pročitati na vrijeme. 838 00:43:22,284 --> 00:43:23,520 >> STUDENTSKA 26: Jedan? 839 00:43:23,520 --> 00:43:24,270 >> JASON Hirschhorna: Jedna stvar. 840 00:43:24,270 --> 00:43:28,540 Želim čitati jednu stvar o veličini 1, jedan ugriz na vrijeme. 841 00:43:28,540 --> 00:43:32,110 A gdje sam ga stavio, nakon što sam ga pročitao? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENTSKA 27: Odredište? 844 00:43:36,510 --> 00:43:39,270 >> JASON Hirschhorna: Pa ja ne mogu staviti to ravno u okolici. 845 00:43:39,270 --> 00:43:40,800 >> STUDENTSKA 28: Ti ćeš staviti je u trećoj pointer? 846 00:43:40,800 --> 00:43:41,780 >> STUDENTSKA 27: do odredišta. 847 00:43:41,780 --> 00:43:42,270 >> JASON Hirschhorna: OK. 848 00:43:42,270 --> 00:43:42,630 Da. 849 00:43:42,630 --> 00:43:46,820 >> STUDENTSKA 29: Možete izjaviti nešto za djelovati kao privremeno skladištenje i ranije. 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 >> STUDENTSKA 29: Još jedna datoteka pointer, možda? 853 00:43:53,930 --> 00:43:54,220 >> JASON Hirschhorna: OK. 854 00:43:54,220 --> 00:43:55,585 Dakle, ovo je ništavan zvijezda - 855 00:43:55,585 --> 00:43:57,750 to je tipa void zvijezda, tako da ne moraju biti file pointer. 856 00:43:57,750 --> 00:44:02,520 A ako čitam jedan bajt, gdje će biti dobro mjesto 857 00:44:02,520 --> 00:44:03,850 pohraniti jedan bajt? 858 00:44:03,850 --> 00:44:04,660 >> STUDENTSKA 29: Niz? 859 00:44:04,660 --> 00:44:05,770 >> JASON Hirschhorna: polje. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 I što je još nešto što je Samo je jedna veličina bajta? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENTSKA 30: char *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENTSKA 29: Da. 865 00:44:18,530 --> 00:44:19,880 >> JASON Hirschhorna: char * nije jedan bajt. 866 00:44:19,880 --> 00:44:20,440 >> STUDENTSKA 29: char. 867 00:44:20,440 --> 00:44:21,810 >> JASON Hirschhorna: char je jedan bajt. 868 00:44:21,810 --> 00:44:22,920 Zar ne? 869 00:44:22,920 --> 00:44:26,740 Tako ćemo nazvati ovu tampon je generički naziv se koristi za takve stvari za pohranu 870 00:44:26,740 --> 00:44:27,910 nešto privremeno. 871 00:44:27,910 --> 00:44:30,880 Tako sam stvoriti tampon. 872 00:44:30,880 --> 00:44:31,150 Zar ne? 873 00:44:31,150 --> 00:44:32,990 No, to ne uzeti prazninu *. 874 00:44:32,990 --> 00:44:38,660 Dakle, možda ste u pravu, da je trebao biti veličine 0 pufer. 875 00:44:38,660 --> 00:44:41,070 Dakle, ona sprema jedan - 876 00:44:41,070 --> 00:44:41,280 u pravu. 877 00:44:41,280 --> 00:44:43,560 >> Budući da je ovaj ovdje - char tampon je lik, ali 878 00:44:43,560 --> 00:44:45,110 to traje prazninu * - 879 00:44:45,110 --> 00:44:45,870 pointer. 880 00:44:45,870 --> 00:44:50,640 Tako sam mogao to učiniti i sada tampon je pointer. 881 00:44:50,640 --> 00:44:53,214 Što sam drugo mogao učiniti? 882 00:44:53,214 --> 00:44:55,775 >> STUDENTSKA 31: Stavite jednu zvjezdicu pored char. 883 00:44:55,775 --> 00:44:58,380 >> JASON Hirschhorna: Mogao bih stvorili su to char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Ono što je još jedna stvar koju sam mogao napraviti? 886 00:45:03,131 --> 00:45:04,050 Ili idemo s ovom jednom. 887 00:45:04,050 --> 00:45:05,740 Char * tampon, pa što da stavim ovdje u? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> STUDENTSKA 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 pointer na char. 893 00:45:14,500 --> 00:45:19,480 I na tom mjestu, mi smo stavljajući jedan bajt nešto smo čitali. 894 00:45:19,480 --> 00:45:19,980 Da. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Samo brzo pitanje. 897 00:45:21,230 --> 00:45:24,440 Želite li malloc tampon? 898 00:45:24,440 --> 00:45:25,930 >> JASON Hirschhorna: Tko može odgovoriti na to pitanje? 899 00:45:25,930 --> 00:45:30,210 >> STUDENTSKA 32: Pa, to zapravo nije točka za bilo što u ovom trenutku, tako da - 900 00:45:30,210 --> 00:45:32,610 >> JASON Hirschhorna: Ali učiniti želimo ga malloc? 901 00:45:32,610 --> 00:45:35,600 >> STUDENTSKA 32: Ako ste bili na to da je način, valjda, da, zato što bi potrebno 902 00:45:35,600 --> 00:45:36,990 neko mjesto za to ukazati. 903 00:45:36,990 --> 00:45:38,350 >> JASON Hirschhorna: Dali smo moraju ga malloc? 904 00:45:38,350 --> 00:45:40,580 >> STUDENTSKA 33: Ako idete koristite ga izvan petlje. 905 00:45:40,580 --> 00:45:42,524 >> JASON Hirschhorna: Hoćemo li koristite ga izvan petlje? 906 00:45:42,524 --> 00:45:44,392 >> STUDENTSKA 34: Da. 907 00:45:44,392 --> 00:45:44,860 >> STUDENTSKA 35: Čekaj. 908 00:45:44,860 --> 00:45:46,980 Želimo ga proglasiti u petlji na svijetu? 909 00:45:46,980 --> 00:45:50,100 >> JASON Hirschhorna: Pa mislim da imamo neki pseudo WHILE petlje ovdje da smo 910 00:45:50,100 --> 00:45:51,950 Pokušavam shvatiti, da nismo došli do još. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Ne trebamo ga malloc. 913 00:45:56,010 --> 00:45:59,310 Mi smo s radom u glavno, to je samo ide da se koristi u ovoj petlji. 914 00:45:59,310 --> 00:46:00,540 To ne treba postojati izvan toga. 915 00:46:00,540 --> 00:46:02,340 >> Dakle, to može biti lokalna varijabla. 916 00:46:02,340 --> 00:46:03,925 Imate pokazivač područna promjenljiva. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENTSKA 36: Ali to nije ukazujući na sve. 919 00:46:09,590 --> 00:46:11,540 >> JASON Hirschhorna: Ne, to nije inicijaliziran na bilo što. 920 00:46:11,540 --> 00:46:12,790 No, nećemo ga koristiti također. 921 00:46:12,790 --> 00:46:15,300 Mi ćemo staviti nešto u je prvi put da smo ga koristiti. 922 00:46:15,300 --> 00:46:16,580 Tako da se čini u redu. 923 00:46:16,580 --> 00:46:17,780 Dakle, mi ne trebamo malloc ovdje. 924 00:46:17,780 --> 00:46:19,360 I mislim da je u redu što 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 liniju. 928 00:46:27,190 --> 00:46:28,490 Učinimo slijedeću liniju. 929 00:46:28,490 --> 00:46:32,984 >> Ako želimo pisati u datoteku, što je Dobar funkcija koristiti za to? 930 00:46:32,984 --> 00:46:33,770 >> STUDENTSKA 37: Fwrite? 931 00:46:33,770 --> 00:46:35,140 >> STUDENTSKA 38: fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON Hirschhorna: fprintf je jedan. 933 00:46:36,010 --> 00:46:37,260 Ono što je još jedan? 934 00:46:37,260 --> 00:46:37,680 >> STUDENTSKA 39: Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON Hirschhorna: Fwrite. 936 00:46:38,510 --> 00:46:41,250 A za naše potrebe, fwrite, što smo vidjeli ovdje, je 937 00:46:41,250 --> 00:46:42,500 vjerojatno bolji izbor. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 To traje četiri argumenta kao dobro. 940 00:46:53,950 --> 00:46:57,570 Nishant, možete li dati mene su argumenti? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Prvi će da se samo tampon. 942 00:47:00,570 --> 00:47:02,210 >> JASON Hirschhorna: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: drugi je samo će biti 1. 944 00:47:06,752 --> 00:47:09,510 Treći će biti 1. 945 00:47:09,510 --> 00:47:11,470 A četvrti će biti DST. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON Hirschhorna: Ima li netko Imate li pitanja o toj liniji? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 To izgleda dobro. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Dakle, sada to izgleda kao jedna stvar mi smo nedostaje - zapravo, idemo pisati 952 00:47:34,250 --> 00:47:35,090 ovo zadnje linije. 953 00:47:35,090 --> 00:47:36,300 Zatvaranje datoteke. 954 00:47:36,300 --> 00:47:38,880 Tko nas može završiti pisanje ove zadnje dvije linije? 955 00:47:38,880 --> 00:47:39,120 Da. 956 00:47:39,120 --> 00:47:39,850 Žao nam je, kako se zoveš? 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 a zatim fclose odredište. 960 00:47:47,560 --> 00:47:52,430 >> JASON Hirschhorna: Fclose, otvorena zagrada, src, bliski zagrada, zarez. 961 00:47:52,430 --> 00:47:53,680 I fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 Je li? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: Otvorena zagrade, DST a zatim zarezom. 965 00:48:01,710 --> 00:48:02,520 >> JASON Hirschhorna: Velika. 966 00:48:02,520 --> 00:48:04,338 A što sam trebao uključiti na kraju? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Vrati 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON Hirschhorna: Vrati 0. 969 00:48:05,570 --> 00:48:06,820 Moram li? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Samo je pitanje. 972 00:48:12,590 --> 00:48:14,957 Moramo li se uključiti povratak 0? 973 00:48:14,957 --> 00:48:16,240 >> VIŠE STUDENTI: Ne. 974 00:48:16,240 --> 00:48:16,430 >> JASON Hirschhorna: Ne. 975 00:48:16,430 --> 00:48:18,090 Glavni to radi automatski ako bi se na kraju. 976 00:48:18,090 --> 00:48:20,580 No, mislim da je lijepo su ga eksplicitno. 977 00:48:20,580 --> 00:48:23,860 Pogotovo kad smo se vraćamo drugi stvari kroz program. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 To je ono što mi nedostaje - 980 00:48:26,230 --> 00:48:28,520 DOK što? 981 00:48:28,520 --> 00:48:31,630 Tko može sjetiti neke - 982 00:48:31,630 --> 00:48:35,240 ima neki smisao onoga što se stvari mogao ići tamo? 983 00:48:35,240 --> 00:48:37,350 Čak i ako je to samo u nekim pseudocode kao i jeziku? 984 00:48:37,350 --> 00:48:41,330 >> Ono što smo stvarno - što Ne želimo ići do? 985 00:48:41,330 --> 00:48:41,980 Da, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: kraj datoteke. 987 00:48:43,240 --> 00:48:44,990 >> JASON Hirschhorna: kraj datoteke. 988 00:48:44,990 --> 00:48:49,280 Pa što misliš kraju datoteke? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: Kada dođete kraj datoteke, zaustaviti. 990 00:48:50,955 --> 00:48:51,240 >> JASON Hirschhorna: OK. 991 00:48:51,240 --> 00:48:53,460 Dakle, nakon što smo do kraja datoteke. 992 00:48:53,460 --> 00:48:56,893 Kako znamo kada smo postigli kraj datoteke? 993 00:48:56,893 --> 00:48:59,900 >> STUDENTSKA 40: Mislim da tampon će biti postavljena na NULL. 994 00:48:59,900 --> 00:49:01,885 >> STUDENTSKA 41: Buffer je proglasio unutar petlje. 995 00:49:01,885 --> 00:49:03,670 >> JASON Hirschhorna: Pa što mislite tampon će biti postavljen na NULL. 996 00:49:03,670 --> 00:49:05,850 Zašto bi tampon biti postavljena na nulu? 997 00:49:05,850 --> 00:49:10,420 >> STUDENTSKA 40: Jer kada fread, pokušavate staviti 998 00:49:10,420 --> 00:49:13,528 ništa u tampon. 999 00:49:13,528 --> 00:49:13,980 >> JASON Hirschhorna: OK. 1000 00:49:13,980 --> 00:49:15,550 Pa si razmišljam fread - 1001 00:49:15,550 --> 00:49:19,000 kad smo došli do kraja datoteka, što je fread će učiniti? 1002 00:49:19,000 --> 00:49:21,230 Mislim da je to pitanje moramo shvatiti. 1003 00:49:21,230 --> 00:49:21,960 Što fread učiniti? 1004 00:49:21,960 --> 00:49:25,640 Da li to staviti NULL u tampon, ili to učiniti nešto drugo? 1005 00:49:25,640 --> 00:49:27,510 Kako možemo shvatiti što to znači? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENTSKA 42: Čovjek. 1007 00:49:28,190 --> 00:49:28,810 >> JASON Hirschhorna: Man. 1008 00:49:28,810 --> 00:49:32,280 Pa pogledajmo ovamo. 1009 00:49:32,280 --> 00:49:34,000 Povratak vrijednost. 1010 00:49:34,000 --> 00:49:39,620 Na uspjeh, fread i fwrite vratiti broj predmeta ili sati. 1011 00:49:39,620 --> 00:49:43,700 Taj broj jednak je broju bajtova prenositi samo kada je veličina 1. 1012 00:49:43,700 --> 00:49:47,780 Ukoliko dođe do pogreške, ili kraj datoteka je postignut, povratna vrijednost je 1013 00:49:47,780 --> 00:49:51,490 Ukratko računati stavka ili 0. 1014 00:49:51,490 --> 00:49:57,860 >> Dakle, za naše potrebe, ako fread doseže kraj datoteke, a čita iz 1015 00:49:57,860 --> 00:50:02,100 kraj datoteke, nema ništa lijevo čitati, što se to događa da se vrate? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENTSKA 43: Nula? 1017 00:50:03,290 --> 00:50:04,540 >> JASON Hirschhorna: Što? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENTSKA 43: Nula? 1019 00:50:05,300 --> 00:50:05,690 >> JASON Hirschhorna: Zero. 1020 00:50:05,690 --> 00:50:06,940 To će se vratiti na nulu. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Dakle, mi znamo da je fread, kad smo do kraja datoteke, ide 1023 00:50:13,010 --> 00:50:13,690 Za povratak na nulu. 1024 00:50:13,690 --> 00:50:17,460 Kako možemo iskoristiti da u našu korist? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Možete proglasiti varijablu izvan petlje zove provjera. 1026 00:50:21,733 --> 00:50:27,040 Ako provjera jednako - 1027 00:50:27,040 --> 00:50:28,190 za sada - jedan. 1028 00:50:28,190 --> 00:50:28,920 >> JASON Hirschhorna: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: A onda možete staviti IF izjavu odmah nakon fread govoreći, ako 1030 00:50:38,050 --> 00:50:42,600 fread jednaka nuli - 1031 00:50:42,600 --> 00:50:43,850 br. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON Hirschhorna: Tko može pomoći Avi out? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Koja je vrijednost vratio fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON Hirschhorna: Upravo smo otišao preko toga. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Kako vam se čine? 1038 00:50:55,450 --> 00:50:57,190 >> JASON Hirschhorna: Dakle, ona se vraća - Idemo pogledati ovdje - to vraća 1039 00:50:57,190 --> 00:50:59,340 size_t, što je u suštini cijeli broj. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Tako da se vraća cijeli broj. 1042 00:51:03,410 --> 00:51:05,160 A u našem slučaju, to će vratiti 1 ili 0 - 1043 00:51:05,160 --> 00:51:08,760 1 ako je pročitao jednu stvar - jedan bajt, i 0, ako smo došli do kraja. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Dakle, ako fread - 1046 00:51:16,450 --> 00:51:16,855 Je li? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENTSKA 45: A da jednostavno stavite full fread (pufer, 1, 1, src) u 1048 00:51:20,330 --> 00:51:21,660 while petlja? 1049 00:51:21,660 --> 00:51:26,510 >> JASON Hirschhorna: Pa što predlažu to se u tu? 1050 00:51:26,510 --> 00:51:27,600 >> [ubačenih GLASOVI] 1051 00:51:27,600 --> 00:51:29,520 >> JASON Hirschhorna: Drži se. 1052 00:51:29,520 --> 00:51:30,885 Tako smo oslobođenje od toga. 1053 00:51:30,885 --> 00:51:33,300 Dakle, ti si predlaganje stavljajući fread u tu? 1054 00:51:33,300 --> 00:51:35,457 Što bi mi također premjestiti ako želite to učiniti? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENTSKA 45: tampon van. 1056 00:51:36,740 --> 00:51:38,110 >> JASON Hirschhorna: Trebamo također premjestiti ovo ovdje. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENTSKA 45: Ali ne da se stalno pomaknuti prema naprijed? 1058 00:51:41,700 --> 00:51:42,950 >> [ubačenih GLASOVI] 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 Dakle, to je ono što Okshar predložio. 1062 00:51:50,570 --> 00:51:51,930 Mi stvaramo naš tampon. 1063 00:51:51,930 --> 00:51:57,020 Mi DOK fread, onda smo fwrite. 1064 00:51:57,020 --> 00:51:59,760 Misli se na to? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENTSKA 46: Moje jedino pitanje je, bi to zapravo izvršiti naredbu fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON Hirschhorna: Veliko pitanje. 1067 00:52:06,175 --> 00:52:11,050 Kada ste stavljajući funkciju poziv unutar stanja, koje ne 1068 00:52:11,050 --> 00:52:12,300 Funkcija poziva izvršiti? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Vidjeli smo primjere ovo prije. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Zar ne? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENTSKA 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Da. 1075 00:52:26,590 --> 00:52:30,140 Dakle, on ne izvrši. 1076 00:52:30,140 --> 00:52:31,790 >> JASON Hirschhorna: Vidjeli smo stvari kao što je to prije, gdje smo 1077 00:52:31,790 --> 00:52:33,550 Funkcija poziva unutar uvjet. 1078 00:52:33,550 --> 00:52:35,540 Da li izvršiti tu funkciju poziv? 1079 00:52:35,540 --> 00:52:36,350 Da. 1080 00:52:36,350 --> 00:52:37,410 Dakle, odgovor je potvrdan. 1081 00:52:37,410 --> 00:52:41,010 Ova funkcija poziv će izvršavati. 1082 00:52:41,010 --> 00:52:42,418 Ali opet, to je ono što želimo? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Što je jedan način na koji smo mogli shvatiti je li to ono što želimo? 1085 00:52:52,204 --> 00:52:53,470 >> VIŠE STUDENTI: Pokrenite ga? 1086 00:52:53,470 --> 00:52:54,460 >> JASON Hirschhorna: Mogli bismo ga pokrenuti. 1087 00:52:54,460 --> 00:52:57,500 No, prije nego što smo to učinili, što smo mogli također razlog kroz to. 1088 00:52:57,500 --> 00:52:57,920 Ako - 1089 00:52:57,920 --> 00:53:01,920 kažu imamo jedan bajt u našoj podnijeti, mi ćemo doći do ovdje, 1090 00:53:01,920 --> 00:53:02,660 mi ćemo doći do tog koda. 1091 00:53:02,660 --> 00:53:03,620 To će pokrenuti. 1092 00:53:03,620 --> 00:53:07,780 fread će se vratiti jedan bajt i spremiti ga u tampon. 1093 00:53:07,780 --> 00:53:11,290 A to će se ocjenjivati ​​na 1, pravo, nakon što se on vrati jedan. 1094 00:53:11,290 --> 00:53:12,640 >> Dakle, dok 1. 1095 00:53:12,640 --> 00:53:15,325 Znači li to da kod unutar while petlja će se izvršiti? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENTSKA 47: Da. 1097 00:53:15,453 --> 00:53:16,040 To je istina. 1098 00:53:16,040 --> 00:53:16,290 >> JASON Hirschhorna: Da. 1099 00:53:16,290 --> 00:53:17,490 1 je istina. 1100 00:53:17,490 --> 00:53:18,240 Nije 0. 1101 00:53:18,240 --> 00:53:20,360 Dakle, kod unutar ovdje će izvršavati. 1102 00:53:20,360 --> 00:53:22,300 Dakle, mi ćemo napisati da. 1103 00:53:22,300 --> 00:53:25,340 Mi ćemo se vratiti u to linija opet. 1104 00:53:25,340 --> 00:53:26,850 Sada imamo - 1105 00:53:26,850 --> 00:53:28,550 mi smo na kraju naše datoteke. 1106 00:53:28,550 --> 00:53:30,980 Čitali smo od kraja našeg datoteke, jer smo imali samo jedan bajt u njega. 1107 00:53:30,980 --> 00:53:34,270 >> Fread vraća 0, trgovina nešto u spremniku. 1108 00:53:34,270 --> 00:53:35,890 Ja iskreno ne znam što pohranjuje u spremniku. 1109 00:53:35,890 --> 00:53:38,380 Vjerojatno bismo mogli gledati da vidim što se to dogodi. 1110 00:53:38,380 --> 00:53:40,130 To ja iskreno ne znam. 1111 00:53:40,130 --> 00:53:43,090 Mi ne znamo, koga briga što pohranjuje u tampon? 1112 00:53:43,090 --> 00:53:44,010 No, to ne vraća 0.. 1113 00:53:44,010 --> 00:53:45,440 I da će, dok 0 izvršiti? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> DOK 0 neće izvršavati. 1116 00:53:51,180 --> 00:53:54,030 Pa onda ćemo preseliti ovamo. 1117 00:53:54,030 --> 00:53:58,870 Tako ćemo dobiti dizanjem ruku ako je to je kod trebamo raditi, ili ako smo 1118 00:53:58,870 --> 00:54:00,140 treba napraviti promjene na prvom mjestu. 1119 00:54:00,140 --> 00:54:02,180 Dakle, ako mislite - morate glasati. 1120 00:54:02,180 --> 00:54:06,885 Ako mislite da bismo trebali pokrenuti ovaj kod kao što je, molim neka digne ruku. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> OK. 1123 00:54:13,400 --> 00:54:14,315 Postoji jedan - 1124 00:54:14,315 --> 00:54:17,260 da li vi imate pitanje, zabrinutost? 1125 00:54:17,260 --> 00:54:18,080 Da. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENTSKA 48: Nakon što smo preseliti tampon izvan petlje, mi 1127 00:54:21,240 --> 00:54:22,670 moraju ga malloc? 1128 00:54:22,670 --> 00:54:23,310 >> JASON Hirschhorna: Veliko pitanje. 1129 00:54:23,310 --> 00:54:26,670 Nakon što smo preseliti tampon izvan petlje, moramo ga malloc? 1130 00:54:26,670 --> 00:54:28,400 To je opseg pitanje. 1131 00:54:28,400 --> 00:54:32,130 Ako ćemo započeti tampon izvan ove petlje, hoće li postojati 1132 00:54:32,130 --> 00:54:33,534 unutar petlje? 1133 00:54:33,534 --> 00:54:35,230 >> VIŠE STUDENTI: Da. 1134 00:54:35,230 --> 00:54:35,580 >> JASON Hirschhorna: Da. 1135 00:54:35,580 --> 00:54:40,100 Njegov opseg pokriva unutar petlje, i, zapravo, ništa ispod ga iznutra 1136 00:54:40,100 --> 00:54:42,460 ovog zakona, uključujući stvari unutar ovdje. 1137 00:54:42,460 --> 00:54:43,930 Dakle, ne treba nam to malloc. 1138 00:54:43,930 --> 00:54:47,766 To je lokalna promjenjiva, a njezin opseg Još uvijek uključuje petlje. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENTSKA 49: Trebamo li ga osloboditi? 1140 00:54:49,540 --> 00:54:51,770 >> JASON Hirschhorna: Dali smo trebaju slobodne tampon? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENTSKA 49: Da, ako mi ne malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON Hirschhorna: Dali smo trebaju slobodne tampon? 1143 00:54:55,750 --> 00:54:57,160 Mi ne. 1144 00:54:57,160 --> 00:55:01,280 Opet, to je lokalna varijabla, tako da mi ne treba ga osloboditi. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Da vidimo što će se dogoditi. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Tako da je Nepoznati. 1149 00:55:18,220 --> 00:55:20,830 To je ono nešto što Marcus je predložio ranije. 1150 00:55:20,830 --> 00:55:25,340 Dakle, imamo tu pogrešku, varijabilni tampon Nepoznati je kada se ovdje koristi. 1151 00:55:25,340 --> 00:55:26,590 >> Kako možemo popraviti? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENTSKA 50: malloc to? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENTSKA 51: Jednako NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENTSKA 52: Recite tampon jednako 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 Mi ga imamo sada. 1160 00:55:42,410 --> 00:55:45,630 Idemo napraviti nešto pokušati kopirati. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Dakle, mi imamo tekstualnu datoteku. 1163 00:56:10,490 --> 00:56:11,740 Kako možemo pokrenuti ovaj program? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Da. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENTSKA 53: Možete napraviti točku slash SP, test.txt. 1167 00:56:22,230 --> 00:56:25,140 A onda možete odrediti drugu datoteku koje će pohraniti u. 1168 00:56:25,140 --> 00:56:25,510 >> JASON Hirschhorna: OK. 1169 00:56:25,510 --> 00:56:27,380 Mi ćemo ga nazvati out.txt. 1170 00:56:27,380 --> 00:56:28,630 Cool? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg fault. 1173 00:56:34,320 --> 00:56:35,570 Misli na krivu segmentu? 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 možemo saznati gdje kriv seg je? 1177 00:56:45,040 --> 00:56:45,680 Što? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENTSKA 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 Mi smo mali gdb pisanjem gdb dot crtu, Naziv našeg programa. 1182 00:56:55,300 --> 00:56:57,020 Nema argumenata naredbenog retka tamo. 1183 00:56:57,020 --> 00:56:59,570 Mi ćemo postaviti Prijelomna točka na glavni. 1184 00:56:59,570 --> 00:57:02,190 Ako želim pokrenuti gdb, što da radim? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENTSKA 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON Hirschhorna: R. I što onda? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENTSKA 55: Argumenti? 1188 00:57:09,400 --> 00:57:10,650 >> JASON Hirschhorna: Onda naredbenog retka argumente. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Idemo prošetati. 1191 00:57:17,120 --> 00:57:19,090 N samo mi uzimanje redak po redak. 1192 00:57:19,090 --> 00:57:21,450 Ja ću ići do Ja dobiti moj SEG kvar. 1193 00:57:21,450 --> 00:57:22,700 Tu je moj seg fault. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Izgleda fread uzrokovana moja seg fault. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Znam fread uzrokovalo moje SEG kvar, jer je to bio 1198 00:57:32,770 --> 00:57:34,950 linija smo upravo pogubljen. 1199 00:57:34,950 --> 00:57:36,530 >> I jedina stvar koja je događa u toj liniji - 1200 00:57:36,530 --> 00:57:37,520 Dvije stvari koje su se događale. 1201 00:57:37,520 --> 00:57:40,610 Fread se događa, a onda smo bili radi neke provjere, dok. 1202 00:57:40,610 --> 00:57:44,820 Ja sam spreman kladiti da DOK ček nije uzrok mog SEG kvar. 1203 00:57:44,820 --> 00:57:46,950 Najvjerojatnije, fread bio uzrok moje SEG kvar. 1204 00:57:46,950 --> 00:57:49,260 Vidim nešto ovdje, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Memorija kopija. 1206 00:57:50,500 --> 00:57:53,820 Zvuči kao da se kreće uspomenu iz jednog mjesta na drugo. 1207 00:57:53,820 --> 00:57:56,890 Zvuči kao nešto što će se dogoditi u fread, možda neki memorije 1208 00:57:56,890 --> 00:57:58,910 kreće odavde do ovdje. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Idemo kroz to opet. 1211 00:58:03,860 --> 00:58:06,900 Kako ga mogu početi ispočetka i pokrenite ga ponovno? 1212 00:58:06,900 --> 00:58:08,092 Da. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENTSKA 56: Da li je potrebno staviti znak za struju prije tampon? 1214 00:58:15,140 --> 00:58:17,800 >> JASON Hirschhorna: Dakle Ampersand prije tampon će mi dati adresu 1215 00:58:17,800 --> 00:58:22,330 pufer, koji je char *. 1216 00:58:22,330 --> 00:58:25,250 Trčimo kroz ovo još jednom. 1217 00:58:25,250 --> 00:58:28,248 Kako pokrenuti kroz to još jednom? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENTSKA 57: Može li samo ponovno upisati trčati? 1219 00:58:29,210 --> 00:58:32,050 >> JASON Hirschhorna: Samo opet upisati vožnji. 1220 00:58:32,050 --> 00:58:33,415 Dakle, mi se ne ide na izvršiti ovu liniju. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Dakle, tampon je NULL pokazivač. 1223 00:58:39,240 --> 00:58:40,490 Ispravite? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 To pokazuje da se - da vidimo. 1226 00:58:47,060 --> 00:58:48,500 Ako mi imamo - 1227 00:58:48,500 --> 00:58:50,430 povući brzu sliku o tome. 1228 00:58:50,430 --> 00:58:53,500 Može li svatko Pišem ovamo? 1229 00:58:53,500 --> 00:59:02,890 >> Tako je u dimnjaku, imamo lokalne promjenjiva i to se zove buffer, a 1230 00:59:02,890 --> 00:59:08,230 to je pointer na char. 1231 00:59:08,230 --> 00:59:10,325 Što adresa je ovo char u? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENTSKA 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON Hirschhorna: Točno. 1234 00:59:13,400 --> 00:59:14,200 To je ono što je to. 1235 00:59:14,200 --> 00:59:17,600 U ovdje, unutar tampon, pohranjen 0x0. 1236 00:59:17,600 --> 00:59:20,480 To je ono što imamo - Postavljanje imamo upravo sada. 1237 00:59:20,480 --> 00:59:27,540 Dakle, ova linija, fread, stavlja nešto iz izvora gdje? 1238 00:59:27,540 --> 00:59:30,560 U ovoj kutiji ili ovoj kutiji? 1239 00:59:30,560 --> 00:59:31,060 Koji box? 1240 00:59:31,060 --> 00:59:33,290 Lijevi okvir ili desni okvir? 1241 00:59:33,290 --> 00:59:34,750 Ovo pravo kutija. 1242 00:59:34,750 --> 00:59:38,440 >> Slijedi pokazivač, i stavlja ga ovdje. 1243 00:59:38,440 --> 00:59:42,620 Kada smo probati i dodir memorije na položaj 0, što smo dobili? 1244 00:59:42,620 --> 00:59:45,050 Segmentacije kriv. 1245 00:59:45,050 --> 00:59:46,550 To je pogreška imamo upravo sada. 1246 00:59:46,550 --> 00:59:46,970 Da. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENTSKA 59: Ne morate staviti tampon zvijezda? 1248 00:59:48,410 --> 00:59:49,180 Ili ne? 1249 00:59:49,180 --> 00:59:50,050 Za fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON Hirschhorna: Pa fread Potrebno je pokazivač. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Dakle, to prolazi u tampon. 1253 00:59:55,900 --> 00:59:58,980 I onda ćemo de-referenca to negdje unutar fread. 1254 00:59:58,980 --> 01:00:00,700 Ali opet, što smo vidjeli, to traje pokazivač. 1255 01:00:00,700 --> 01:00:02,560 Ne treba nam da se prođe zvijezdu tampon. 1256 01:00:02,560 --> 01:00:05,350 To bi se prolazi to sve što je ovdje. 1257 01:00:05,350 --> 01:00:07,980 I da, vjerojatno bi nam dati na pogrešku jer smo ga de-pozivom. 1258 01:00:07,980 --> 01:00:08,150 >> Zar ne? 1259 01:00:08,150 --> 01:00:10,690 Kad smo de-reference ovu pokazivač, kada nastojimo pristupiti ovoj lokaciji, 1260 01:00:10,690 --> 01:00:13,140 mi smo dobivanje na pogrešku - naš segmentacije kriv. 1261 01:00:13,140 --> 01:00:15,800 Dakle - 1262 01:00:15,800 --> 01:00:16,690 Ups. 1263 01:00:16,690 --> 01:00:19,090 Idemo dati otkaz 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 - je u pravu ovdje na ovoj liniji. 1266 01:00:22,990 --> 01:00:26,410 I to je problem, jer ove linije. 1267 01:00:26,410 --> 01:00:31,780 >> Kako možemo stvoriti okvir koji je dostupan u fread. 1268 01:00:31,780 --> 01:00:31,980 Zar ne? 1269 01:00:31,980 --> 01:00:35,190 Moramo stvoriti okvir koji je jedan Bajt velika, veličine znakom. 1270 01:00:35,190 --> 01:00:38,590 No, moramo da kutija biti dostupan kad je ova funkcija izvršava. 1271 01:00:38,590 --> 01:00:39,390 Pa gdje je - 1272 01:00:39,390 --> 01:00:39,640 Da. 1273 01:00:39,640 --> 01:00:40,440 Bilo koji ideja? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENTSKA 60: Samo ga postaviti kao bilo random lik. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Dovoljno je učiniti Char Buffer jednakima karakter. 1277 01:00:51,640 --> 01:00:53,795 A onda, kad su tampon postoji - 1278 01:00:53,795 --> 01:00:54,110 >> JASON Hirschhorna: Čekaj. 1279 01:00:54,110 --> 01:00:55,110 Char tampon? 1280 01:00:55,110 --> 01:00:55,880 Dakle, bez zvijezda? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENTSKA 60: Da. 1282 01:00:56,390 --> 01:00:58,560 Izvadite zvijezdu. 1283 01:00:58,560 --> 01:01:00,690 Jednako slučajni karakter. 1284 01:01:00,690 --> 01:01:01,460 >> JASON Hirschhorna: OK. 1285 01:01:01,460 --> 01:01:02,420 Pa daj mi jednu. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENTSKA 60: Kao ili nešto. 1287 01:01:03,170 --> 01:01:06,160 I onda kada imate tampon postoji, koristite - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENTSKA 61: Star? 1289 01:01:06,420 --> 01:01:07,650 Oh ne, znak za struju. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENTSKA 60: Koristite ampersand. 1291 01:01:09,000 --> 01:01:09,470 >> JASON Hirschhorna: OK. 1292 01:01:09,470 --> 01:01:11,320 A što je u fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENTSKA 60: opet koristiti ampersand. 1294 01:01:14,150 --> 01:01:14,320 >> JASON Hirschhorna: U redu. 1295 01:01:14,320 --> 01:01:20,970 Dakle, vaša ideja je, možemo stvoriti char i stavio nešto u njoj, a zatim 1296 01:01:20,970 --> 01:01:22,612 snimati na taj char. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENTSKA 60: Da. 1298 01:01:23,760 --> 01:01:25,916 >> JASON Hirschhorna: Što ljudi misle? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENTSKA 62: To je zamršena. 1300 01:01:27,770 --> 01:01:28,460 >> JASON Hirschhorna: OK. 1301 01:01:28,460 --> 01:01:29,760 Idemo ga izvući. 1302 01:01:29,760 --> 01:01:35,720 Dakle, ovaj put, ja ću izvući to na crvena na stog ovdje, a onda smo 1303 01:01:35,720 --> 01:01:36,410 imat će - 1304 01:01:36,410 --> 01:01:36,822 uh! 1305 01:01:36,822 --> 01:01:38,060 Oprostite. 1306 01:01:38,060 --> 01:01:45,930 Dakle, ovaj put imamo nešto što se zove tampon, i to je na hrpi. 1307 01:01:45,930 --> 01:01:48,430 Ispravite? 1308 01:01:48,430 --> 01:01:51,520 I mi smo spas u njoj, u početku. 1309 01:01:51,520 --> 01:01:53,830 >> Onda imamo poziv fread. 1310 01:01:53,830 --> 01:02:01,300 Što fread nema se što je potrebno bajt iz naš sliku i stavlja ga negdje. 1311 01:02:01,300 --> 01:02:04,570 To ga stavlja u god stvar je pokazujući. 1312 01:02:04,570 --> 01:02:09,130 Pa, prije nego što smo imali ovu adresu - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Sada ono adresa imamo? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENTSKA 63: Što god adresa tampon. 1316 01:02:14,650 --> 01:02:15,970 >> JASON Hirschhorna: Štogod adresa tampon. 1317 01:02:15,970 --> 01:02:22,370 Vjerojatno će biti nešto slično. 1318 01:02:22,370 --> 01:02:26,950 Vjerojatno će se početi s b i f, a zatim su šest drugima 1319 01:02:26,950 --> 01:02:27,970 heksadecimalni znamenki. 1320 01:02:27,970 --> 01:02:28,480 Nije važno. 1321 01:02:28,480 --> 01:02:29,470 Neki adresa. 1322 01:02:29,470 --> 01:02:31,410 A mi prolaze tu adresu u. 1323 01:02:31,410 --> 01:02:34,790 >> I mi ćemo staviti našu jednu Bajt stvar na toj adresi. 1324 01:02:34,790 --> 01:02:38,470 Tako ćemo staviti našu jednu Bajt stvar unutar ovdje. 1325 01:02:38,470 --> 01:02:40,800 A onda ćemo pisati ono što je ikada ovdje unutra. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Da li itko ima bilo kakvih pitanja o tome? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Tko misli da je ovaj broj će raditi? 1330 01:02:54,690 --> 01:02:56,020 >> Podignite ruku ako mislite taj broj će raditi. 1331 01:02:56,020 --> 01:02:57,270 Morate uzeti stav. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 A tko misli da se to kod neće raditi? 1334 01:03:02,500 --> 01:03:04,610 Podignite ruku. 1335 01:03:04,610 --> 01:03:06,750 Svatko drugi bi trebali biti podizanje njihove ruke. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, gdje stojite? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL: Ne mogu se odlučiti. 1339 01:03:10,680 --> 01:03:12,070 Nekako u sredini. 1340 01:03:12,070 --> 01:03:12,736 >> JASON Hirschhorna: Ti si u sredini. 1341 01:03:12,736 --> 01:03:13,092 Izaberite jednu. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: ja ću imati vjeru i kažu da će raditi. 1343 01:03:14,400 --> 01:03:14,660 >> JASON Hirschhorna: OK. 1344 01:03:14,660 --> 01:03:16,047 Vi ćete imati vjeru i reći to radi? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Što se dogodilo? 1347 01:03:27,020 --> 01:03:28,270 >> [ubačenih GLASOVI] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON Hirschhorna: Ne seg fault. 1350 01:03:35,950 --> 01:03:40,320 Kako možemo provjeriti je li Dvije stvari su jednaki? 1351 01:03:40,320 --> 01:03:42,060 Dvije datoteke su jednaki. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENTSKA 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON Hirschhorna: Diff. 1354 01:03:45,490 --> 01:03:51,630 Diff provjerava razlikama između dvije datoteke, a ako se ne vrati 1355 01:03:51,630 --> 01:03:52,890 ništa, oni su identični. 1356 01:03:52,890 --> 01:03:59,030 A ako mi se otvoriti, dobili smo našu datoteku. 1357 01:03:59,030 --> 01:04:00,490 Tako da je točna rješenja. 1358 01:04:00,490 --> 01:04:01,780 Idemo se osvrnuti na to još jednom. 1359 01:04:01,780 --> 01:04:04,080 Mi zapravo nije ni treba ga započeti. 1360 01:04:04,080 --> 01:04:05,520 >> To će vjerojatno izgledati malo čišći, ako niste stavili 1361 01:04:05,520 --> 01:04:07,680 nešto slučajnim tamo. 1362 01:04:07,680 --> 01:04:13,070 Stvar se, što je potrebno za stvaranje neki prostor za pohranu nešto od 1363 01:04:13,070 --> 01:04:15,530 fread i poduzeti nešto iz fwrite. 1364 01:04:15,530 --> 01:04:18,400 I to je stvar morala biti ili lokalne varijabla na dimnjak - što 1365 01:04:18,400 --> 01:04:19,890 Mogao sam malloc'd neki prostor. 1366 01:04:19,890 --> 01:04:23,030 >> Tako smo zapravo mogli imati napisano malloc ovdje, i 1367 01:04:23,030 --> 01:04:25,420 da bi radili. 1368 01:04:25,420 --> 01:04:28,660 I onda bismo bili pohranjivanje naše stvari negdje na hrpi. 1369 01:04:28,660 --> 01:04:31,940 No, to je zapravo, vjerojatno, najelegantnije rješenje. 1370 01:04:31,940 --> 01:04:34,490 Dovoljno je stvoriti prostor na dimnjaku za te stvari ići. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Ja bi još dva komentara. 1373 01:04:38,990 --> 01:04:44,650 Ako ste bili da se red u to, i zatim se zabio na to, moji komentari 1374 01:04:44,650 --> 01:04:47,400 će biti kako slijedi. 1375 01:04:47,400 --> 01:04:54,300 To 1 je ovdje, za mene, izgleda kao magija brojeva. 1376 01:04:54,300 --> 01:04:56,860 Ovaj 1, u smislu fread, ima smisla. 1377 01:04:56,860 --> 01:04:59,580 To je niz stvari čitati ni pisati. 1378 01:04:59,580 --> 01:05:03,740 >> Ali ova ovdje trebao vjerojatno biti nešto drugo. 1379 01:05:03,740 --> 01:05:05,180 Dakle, što je jedno rješenje? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENTSKA 65: Veličina bajt. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON Hirschhorna: Kao ovo? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENTSKA 65: Veličina crnila. 1384 01:05:13,130 --> 01:05:13,820 >> JASON Hirschhorna: Veličina crnila. 1385 01:05:13,820 --> 01:05:15,290 Da, bajt nije tipa. 1386 01:05:15,290 --> 01:05:16,320 Dakle, veličina char djela. 1387 01:05:16,320 --> 01:05:30,270 Mogli smo, na vrhu naš broj, # definirano da. 1388 01:05:30,270 --> 01:05:33,410 Zove se nešto BYTE i to je stvarno znak. 1389 01:05:33,410 --> 01:05:37,675 Zapravo, čak i bolji pristup Možda bi bilo to - 1390 01:05:37,675 --> 01:05:39,391 UINT. 1391 01:05:39,391 --> 01:05:40,780 Zna li itko što je to? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Oprostite. 1394 01:05:44,840 --> 01:05:46,090 Imam ga unatrag. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Čekaj, ne. 1397 01:05:52,200 --> 01:05:53,450 Koji put to ići? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Zna li itko što je to? 1400 01:05:59,660 --> 01:06:00,950 Da. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENTSKA 67: Trebala bi standardizirati preko sustava stvari koje 1402 01:06:05,650 --> 01:06:08,760 su - kao ružan cijelih brojeva da ima 8 bajtova? 1403 01:06:08,760 --> 01:06:11,785 >> JASON Hirschhorna: To je točno u pravu. 1404 01:06:11,785 --> 01:06:14,310 Na raznim strojevima, veličina char - 1405 01:06:14,310 --> 01:06:15,180 obično ne char. 1406 01:06:15,180 --> 01:06:16,100 Znakova su obično jedan bajt. 1407 01:06:16,100 --> 01:06:19,590 No, veličina ostalih tipova podataka su različite veličine na 32-bitni stroj 1408 01:06:19,590 --> 01:06:21,370 u odnosu na 64-bitni stroj. 1409 01:06:21,370 --> 01:06:25,180 Uint8_t je uvijek 8 bitova - 1410 01:06:25,180 --> 01:06:27,210 uvijek jedan bajt. 1411 01:06:27,210 --> 01:06:29,580 >> I trebam uključiti da standardni int zaglavlje datoteke. 1412 01:06:29,580 --> 01:06:35,040 Pa sad, to bi vjerojatno bio Najbolji način napisati ovaj kod. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Tako sam se riješiti čarobnim brojevima. 1415 01:06:41,450 --> 01:06:44,690 A imam i logičnije tip za tampon. 1416 01:06:44,690 --> 01:06:49,450 To nije samo char, to je bajt, što je ono što mi očekujemo da će biti. 1417 01:06:49,450 --> 01:06:53,400 >> I ovdje, mi smo zapravo je malo robusniji. 1418 01:06:53,400 --> 01:06:55,190 Nećemo ga zovete char, koji je - 1419 01:06:55,190 --> 01:06:58,630 Možda, tko zna - mogla biti drugačija veličina na različitim strojevima. 1420 01:06:58,630 --> 01:07:02,025 Mi zapravo reći da je to upravo jedan bajt, uvijek, bez obzira na sve. 1421 01:07:02,025 --> 01:07:05,810 A ako pogledamo ovdje, možemo napraviti up. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Što se dogodilo? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENTSKA 68: To bi moglo biti uključen. 1426 01:07:16,170 --> 01:07:17,880 >> JASON Hirschhorna: Što? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENTSKA 69: Je li? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENTSKA 70: Nisi definira ga kao vrstu. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENTSKA 71: ali to bi trebalo je definirano u standardu. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENTSKA 72: Što se dešava? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENTSKA 73: Treba definirati biti sve kape? 1434 01:07:40,210 --> 01:07:41,370 >> JASON Hirschhorna: Dakle, to nije # definirati. 1435 01:07:41,370 --> 01:07:45,490 Zapravo, u ovom slučaju, ja sam će se koristiti typedef. 1436 01:07:45,490 --> 01:07:48,590 Zato smo ga koristite kao tipa na jednom mjestu. 1437 01:07:48,590 --> 01:07:51,990 Dakle, u ovom slučaju, mi zapravo žele typedef kao da smo tiskanje novog tipa 1438 01:07:51,990 --> 01:07:54,490 Bajt, a to je, u biti, to. 1439 01:07:54,490 --> 01:07:56,590 To je malo drugačiji od # define. 1440 01:07:56,590 --> 01:08:02,740 >> A sada, naš kod radi savršeno. 1441 01:08:02,740 --> 01:08:05,230 Dakle, opet, # define traje nešto, zamjenjuje ga posvuda 1442 01:08:05,230 --> 01:08:06,780 s onim drugim. 1443 01:08:06,780 --> 01:08:07,920 To je samo makro - 1444 01:08:07,920 --> 01:08:09,420 Skraćeno riješiti čarobnim brojevima. 1445 01:08:09,420 --> 01:08:11,360 No, u ovom slučaju, jer smo koristite ga kao vrsta - 1446 01:08:11,360 --> 01:08:12,180 upravo ovdje - 1447 01:08:12,180 --> 01:08:19,880 kako bi za to da rade, trebamo da typedef god bajt je. 1448 01:08:19,880 --> 01:08:21,840 >> I mi smo ga definirali ovdje. 1449 01:08:21,840 --> 01:08:24,750 To nije struct, to je zapravo samo nepotpisani cijeli broj. 1450 01:08:24,750 --> 01:08:27,680 To je jedan bajt dugo. 1451 01:08:27,680 --> 01:08:31,910 Ovaj broj će biti dostupan online, a što bi svi trebali imati upravo sada. 1452 01:08:31,910 --> 01:08:33,830 >> Dakle, imamo - 1453 01:08:33,830 --> 01:08:34,250 savršena - 1454 01:08:34,250 --> 01:08:41,359 13 minuta napustio ići više problema postaviti pet. 1455 01:08:41,359 --> 01:08:44,270 Želim šetati copy.c zajedno, i onda ćemo kratko govoriti 1456 01:08:44,270 --> 01:08:47,120 O drugim dijelovima problema postaviti. 1457 01:08:47,120 --> 01:08:48,899 Pa neka mi podići copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 I super je stvar, mi smo zapravo već se puno pisalo o ovom kodu. 1460 01:09:08,810 --> 01:09:11,180 >> Kod smo pisali doslovno samo došao odavde kad sam bio 1461 01:09:11,180 --> 01:09:13,120 pisanje to sam. 1462 01:09:13,120 --> 01:09:16,990 No, to je copy.c, tvori temelj za prva dva dijela 1463 01:09:16,990 --> 01:09:22,340 Problem postavljen za whodunit.c, koji morate napisati, a resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, što je treći i završni Dio problema skupa, nije 1465 01:09:27,050 --> 01:09:29,529 temelji off ove datoteke. 1466 01:09:29,529 --> 01:09:32,200 >> Ti ćeš morati napisati tu datoteku, dajemo vam predložak za to 1467 01:09:32,200 --> 01:09:34,620 podnijeti, ali to nema veze veze s copy.c. 1468 01:09:34,620 --> 01:09:38,675 Ali zato copy.c je temelj za prva dva dijela, idemo 1469 01:09:38,675 --> 01:09:42,000 hodati kroz njega sada, tako da imate Dobar osjećaj za ono što radi. 1470 01:09:42,000 --> 01:09:43,640 >> A komentari daju nešto od toga daleko. 1471 01:09:43,640 --> 01:09:45,120 Već sam napisao nešto od toga. 1472 01:09:45,120 --> 01:09:49,220 Prvo, mi smo pazeći dobili smo tri argumente. 1473 01:09:49,220 --> 01:09:50,560 Dalje, mi smo prisjećajući naziv datoteke. 1474 01:09:50,560 --> 01:09:52,960 Dakle, mi preskočila ovaj korak kada smo kodirana našu stvar - 1475 01:09:52,960 --> 01:09:54,700 kada je naša up. 1476 01:09:54,700 --> 01:09:56,750 Ali ovdje, oni su stvaranje je malo čišći. 1477 01:09:56,750 --> 01:09:59,350 >> Oni provjeru kako bi bili sigurni obje datoteke su dobri, u 1478 01:09:59,350 --> 01:10:00,450 Osim da ih otvara. 1479 01:10:00,450 --> 01:10:04,760 Napisali smo sve to kod samo sada, pa sam neće boraviti na tom kodu. 1480 01:10:04,760 --> 01:10:09,670 Sljedeća je neke stvari koje je specifično za vrste datoteka koju koristimo, koji 1481 01:10:09,670 --> 01:10:12,240 su bitmap datoteke. 1482 01:10:12,240 --> 01:10:15,660 Bitmap slika imaju neke metapodataka povezane s njima. 1483 01:10:15,660 --> 01:10:20,190 >> Dakle, prvih par bajtova reći o spisu. 1484 01:10:20,190 --> 01:10:23,460 Oni nisu boje piksela u toj slici. 1485 01:10:23,460 --> 01:10:25,120 Oni vam reći o spisu. 1486 01:10:25,120 --> 01:10:28,220 A ako ste pročitali kroz problem setu, ćete imati puno više informacija 1487 01:10:28,220 --> 01:10:33,100 o tome što vrste metapodataka struktura su uključeni u bitmape. 1488 01:10:33,100 --> 01:10:39,350 >> No, to je razlog zašto smo ovaj prvi set - ovaj kod ovdje. 1489 01:10:39,350 --> 01:10:42,490 Mi smo čitajući metapodataka - 1490 01:10:42,490 --> 01:10:45,800 Dva komada metapodataka - file header i info header. 1491 01:10:45,800 --> 01:10:51,030 I provjeravamo neke dijelove na pobrinite se da je istina bitmap sliku 1492 01:10:51,030 --> 01:10:52,420 prije nastavka. 1493 01:10:52,420 --> 01:10:55,470 >> A opet, to su detalji smo Ne morate ići u sada. 1494 01:10:55,470 --> 01:10:57,720 Ako ste pročitali kroz problem setu, shvatit ćete to. 1495 01:10:57,720 --> 01:11:01,370 Da ne duljimo, oni samo govore, ovo je bitmap datoteka, a 1496 01:11:01,370 --> 01:11:02,810 potvrđuje da. 1497 01:11:02,810 --> 01:11:05,180 >> Dalje, pišemo onima na van datoteku. 1498 01:11:05,180 --> 01:11:05,660 Vidimo da je ovdje. 1499 01:11:05,660 --> 01:11:06,910 Pišemo na van pokazivač. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Dalje, mi smo utvrđivanje padding. 1502 01:11:11,320 --> 01:11:15,240 Pa opet, što je posebnost s bitmap datoteke, neke linije uključuju 1503 01:11:15,240 --> 01:11:16,840 punjenje na kraju. 1504 01:11:16,840 --> 01:11:19,000 A ako ste pročitali kroz problem setu, saznat ćete više o padding. 1505 01:11:19,000 --> 01:11:22,330 To je formula pronaći padding. 1506 01:11:22,330 --> 01:11:23,610 >> Važno je zapamtiti - 1507 01:11:23,610 --> 01:11:29,720 kada promijeniti veličinu bitmap podnijeti, za nadopunu promjene. 1508 01:11:29,720 --> 01:11:31,970 Kad promijenite veličinu podnijeti, za nadopunu promjene. 1509 01:11:31,970 --> 01:11:34,310 On nikada neće biti veći od 3 - 1510 01:11:34,310 --> 01:11:36,510 to će biti 0 do 3, uključivo. 1511 01:11:36,510 --> 01:11:38,930 Ali kad promijenite veličinu nešto, nadopune promjene. 1512 01:11:38,930 --> 01:11:47,100 >> Ako imam samo jedan piksel u tom redu, ja potrebna tri bajtova padding, jer 1513 01:11:47,100 --> 01:11:51,190 svaki redak mora biti višekratnici četiri bajtova u bitmap datoteku. 1514 01:11:51,190 --> 01:11:56,120 Ali, ako sam ga dva puta, ići od jednog piksela do dva piksela, od kojih je svaki, 1515 01:11:56,120 --> 01:11:59,510 recimo, je bajt, onda moram Dva bajtova padding kako bi 1516 01:11:59,510 --> 01:12:00,970 da je jednako četiri. 1517 01:12:00,970 --> 01:12:04,200 >> Dakle, kada sam promijeniti veličinu nečega, Moram se promijeniti iznos 1518 01:12:04,200 --> 01:12:06,551 padding imam. 1519 01:12:06,551 --> 01:12:08,100 Da li to smisla svima? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Zatim smo ponoviti tijekom svakog reda, ili kroz sve redove. 1522 01:12:18,720 --> 01:12:21,400 A onda ćemo ponoviti kroz svaki stupac u svakom retku. 1523 01:12:21,400 --> 01:12:25,330 Mi smo liječenje ove bitmap kao mreža, kao što smo tretirani 1524 01:12:25,330 --> 01:12:26,490 odbora u 15. 1525 01:12:26,490 --> 01:12:29,200 >> Kao što smo tretirani cigle kada smo ih ispisuje na zaslonu. 1526 01:12:29,200 --> 01:12:31,350 Rešetka od redaka i stupaca. 1527 01:12:31,350 --> 01:12:32,350 Onda - vidjeli smo to. 1528 01:12:32,350 --> 01:12:33,840 Mi smo zapravo samo kodirani to. 1529 01:12:33,840 --> 01:12:35,780 Stvorili smo neke privremeno skladištenje. 1530 01:12:35,780 --> 01:12:38,710 Čitali smo tamo, a zatim mi to napisati. 1531 01:12:38,710 --> 01:12:42,680 To je upravo ono što smo upravo učinio. 1532 01:12:42,680 --> 01:12:46,760 >> Dalje, jer sam rekao svaki redak završava na neki padding, mi 1533 01:12:46,760 --> 01:12:48,260 preskočimo tu padding - 1534 01:12:48,260 --> 01:12:51,000 stara padding. 1535 01:12:51,000 --> 01:12:52,630 I onda smo ponovno dodati. 1536 01:12:52,630 --> 01:12:55,140 U ovom slučaju, mi stvaramo isto točno sliku. 1537 01:12:55,140 --> 01:12:56,180 Samo smo ga kopirati. 1538 01:12:56,180 --> 01:12:57,700 Dakle, ova linija je glupavo. 1539 01:12:57,700 --> 01:12:59,660 Mogli smo doslovno samo staviti padding u. 1540 01:12:59,660 --> 01:13:04,290 >> No, ako promijenite veličinu datoteke, Želite li još uvijek tu liniju? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Dakle, ako ćemo promijeniti veličinu datoteke, Što nam još žele preskočiti 1543 01:13:11,560 --> 01:13:12,810 preko stare padding? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENTSKA 74: Da. 1546 01:13:15,970 --> 01:13:17,090 >> JASON Hirschhorna: Pa mi radimo. 1547 01:13:17,090 --> 01:13:19,290 Jer ovaj, opet, bavi s izvorne datoteke. 1548 01:13:19,290 --> 01:13:21,570 Nije nas briga o padding iz izvorne datoteke. 1549 01:13:21,570 --> 01:13:23,410 Želimo ići u sljedeći redak. 1550 01:13:23,410 --> 01:13:28,850 No, mi ne samo vratiti stari iznos padding. 1551 01:13:28,850 --> 01:13:31,540 Moramo se vratiti Novi iznos padding. 1552 01:13:31,540 --> 01:13:35,810 >> Dakle, kada smo promjenu veličine file, mi još uvijek žele preskočiti 1553 01:13:35,810 --> 01:13:38,270 padding u starom datoteke - što mi smo čitajući u iz. 1554 01:13:38,270 --> 01:13:40,370 No, ono što pišemo se, idemo morati vratiti neke drugačije 1555 01:13:40,370 --> 01:13:41,890 broj padding koji smo utvrditi. 1556 01:13:41,890 --> 01:13:42,780 Da. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENTSKA 75: Kako bi od ta dva linije ne smeta, zar ne? 1558 01:13:44,550 --> 01:13:46,160 Budući da ste rukovanje različitih datoteka. 1559 01:13:46,160 --> 01:13:46,620 >> JASON Hirschhorna: Točno. 1560 01:13:46,620 --> 01:13:48,220 Redoslijed ove dvije linije nije važno. 1561 01:13:48,220 --> 01:13:49,790 Pišemo ovu liniju. 1562 01:13:49,790 --> 01:13:51,430 To je ovdje za datoteku pišemo se. 1563 01:13:51,430 --> 01:13:54,370 To je važno, tako da smo dobili Pravo iznos padding. 1564 01:13:54,370 --> 01:13:57,560 To mora baviti u datoteci. 1565 01:13:57,560 --> 01:13:58,560 Želimo preskočiti pravo preko padding. 1566 01:13:58,560 --> 01:13:59,470 >> Mi ne želimo čitati - 1567 01:13:59,470 --> 01:14:01,500 ako smo čitajući bajt na vrijeme, mi ne brinu o tim padding bajtova. 1568 01:14:01,500 --> 01:14:04,070 Želimo da se presele u sljedeći redak. 1569 01:14:04,070 --> 01:14:11,800 Konačno baš kao i Lucy je dao za nas, ćemo zatvoriti datoteke i vratiti 0. 1570 01:14:11,800 --> 01:14:13,890 Dakle, ovo je copy.c. 1571 01:14:13,890 --> 01:14:17,850 I mi zapravo napisao - mi proveo većinu poglavlje pišem ovo, u biti. 1572 01:14:17,850 --> 01:14:18,740 >> Vi napravili to. 1573 01:14:18,740 --> 01:14:22,440 Dakle, nadam se da imate dobar osjećaj onoga što se ovdje događa. 1574 01:14:22,440 --> 01:14:25,890 Velika razlika, iskreno, samo je ovaj prvi dio koji se bavi 1575 01:14:25,890 --> 01:14:29,970 Specifičnosti bitmap datoteke. 1576 01:14:29,970 --> 01:14:33,570 Tako sam kao moj sljedeći slajd, ono što trebamo učiniti? 1577 01:14:33,570 --> 01:14:35,510 Pa, neka je razmišljati o Tko je uradio. 1578 01:14:35,510 --> 01:14:38,080 >> A za nekoga tko pročitao Problem postaviti, što nam je činiti 1579 01:14:38,080 --> 01:14:41,410 trebate učiniti u detektivski roman? 1580 01:14:41,410 --> 01:14:42,080 Jednostavno. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> ALEJA: Može li se iz dijela svakog piksela koja označava crveno. 1583 01:14:48,570 --> 01:14:49,730 A onda - 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 Dakle uzmu dio svakog piksela koji označava crveno. 1587 01:14:54,460 --> 01:14:57,234 To je u neposrednoj blizini, ali ne sve. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENTSKA 76: Pa, postoji različitih načina kako to učiniti. 1589 01:14:59,780 --> 01:14:59,870 >> JASON Hirschhorna: OK. 1590 01:14:59,870 --> 01:15:03,070 Daj mi jedan način. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENTSKA 76: Izvadite sve crvene, a zatim istaknuti plave i zelene. 1592 01:15:08,240 --> 01:15:10,010 >> JASON Hirschhorna: OK. 1593 01:15:10,010 --> 01:15:11,830 Dakle, s obzirom oba ta načina - 1594 01:15:11,830 --> 01:15:15,210 to zvuči kao da smo mu dati piksela, što ima crvenu, plavu, zelenu i razinu. 1595 01:15:15,210 --> 01:15:19,350 Želimo promijeniti relativne razine crvene, plave i zelene boje, ovisno 1596 01:15:19,350 --> 01:15:20,740 Na tom piksela. 1597 01:15:20,740 --> 01:15:28,380 Gdje je u ovom pravilniku trebaju mijenjamo relativna crvene, plave i zelene 1598 01:15:28,380 --> 01:15:29,720 razine određenog piksela. 1599 01:15:29,720 --> 01:15:30,600 Nakon što smo ga pročitali - 1600 01:15:30,600 --> 01:15:32,520 prije nego što smo ga pisati? 1601 01:15:32,520 --> 01:15:34,564 Daj mi broj linije. 1602 01:15:34,564 --> 01:15:35,950 >> VIŠE STUDENTI: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON Hirschhorna: 83. 1604 01:15:37,320 --> 01:15:38,570 Dakle ovdje. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Za detektivski roman, kod trebate pisati svi trebali ići tamo. 1607 01:15:45,710 --> 01:15:47,640 I to je jedino kod morate napisati. 1608 01:15:47,640 --> 01:15:51,520 Jer, kao što smo čuli, sve što trebate učiniti je promijeniti ove relativnu plava, 1609 01:15:51,520 --> 01:15:54,420 crvene i zelene boje iz svakog piksela. 1610 01:15:54,420 --> 01:15:58,250 >> Vi ste to pročitali u, a sada ste ide to napisati. 1611 01:15:58,250 --> 01:16:03,100 Kako mogu dobiti - ako imam tu stvar zove triple, upravo ovdje, a to je od 1612 01:16:03,100 --> 01:16:04,570 upisati RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 Pa, ako smo gledali u bmp.h, što je RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENTSKA 77: To je rekonstruirati. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON Hirschhorna: RGBTRIPLE je rekonstruirati. 1618 01:16:18,900 --> 01:16:22,330 Vidimo da je ovdje dolje. 1619 01:16:22,330 --> 01:16:26,600 I tako, ako sam htjela pristup, recimo, Crvena razina rekonstruirati kako ja radim 1620 01:16:26,600 --> 01:16:30,005 pristupiti crvenu razinu ove struct? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS žamor] 1622 01:16:37,280 --> 01:16:38,530 >> STUDENTSKA 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON Hirschhorna: Je li to točno? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENTSKA 79: To bi trebao biti triple dot, umjesto RGBTRIPLE točke? 1626 01:16:53,040 --> 01:16:54,120 >> JASON Hirschhorna: Trostruki. 1627 01:16:54,120 --> 01:16:56,700 Trostruki je lokalna varijabla, pa ovdje, nema pokazivače ovdje. 1628 01:16:56,700 --> 01:16:58,400 Tako smo samo koristiti dot zapis. 1629 01:16:58,400 --> 01:17:00,480 To će mi dati razinu crveno. 1630 01:17:00,480 --> 01:17:06,180 Ako želim to promijeniti, samo sam postaviti je jednak za nešto drugo. 1631 01:17:06,180 --> 01:17:13,190 Pa opet, ova linija koda pristupa ova varijabla unutar ove rekonstruirati i 1632 01:17:13,190 --> 01:17:15,070 možemo ga postaviti na nešto novo. 1633 01:17:15,070 --> 01:17:20,040 >> Tako je za detektivski roman, opet, to je, U biti, ono što trebamo napraviti. 1634 01:17:20,040 --> 01:17:21,170 Vrlo jednostavno. 1635 01:17:21,170 --> 01:17:25,020 Dovoljno je promijeniti neke relativne razine, a ovo je mjesto gdje to ide kod. 1636 01:17:25,020 --> 01:17:27,720 Veličinu, s druge strane, je malo teže. 1637 01:17:27,720 --> 01:17:30,900 Naime, promjena veličine je vjerojatno najzahtjevnijim dio ovog problema postavili. 1638 01:17:30,900 --> 01:17:32,720 Mi imamo tri minute da ide preko njega. 1639 01:17:32,720 --> 01:17:34,910 >> Ali opet, mi smo već pisali većina ovog koda, tako da smo 1640 01:17:34,910 --> 01:17:36,500 bi trebao biti prilično upoznat. 1641 01:17:36,500 --> 01:17:40,750 Koje su neke stvari koje želimo učiniti u stanovati, ako ste pročitali tijekom 1642 01:17:40,750 --> 01:17:43,470 Problem postaviti? 1643 01:17:43,470 --> 01:17:45,290 Ako mi ih dati, mi može govoriti o njima. 1644 01:17:45,290 --> 01:17:47,340 Koje su neke stvari koje želimo učiniti? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENTSKA 80: Vertikalno - 1646 01:17:47,970 --> 01:17:52,360 tako da ga morate vodoravno veličinu, ali vertikalno ga promijeniti veličinu, kao i? 1647 01:17:52,360 --> 01:17:58,475 >> JASON Hirschhorna: Dakle, ako nam je dan piksela, i želimo to promijeniti veličinu po 1648 01:17:58,475 --> 01:18:03,460 faktorom dva, što sada treba da bude mijenjati vodoravno i mijenjati 1649 01:18:03,460 --> 01:18:05,220 vertikalno. 1650 01:18:05,220 --> 01:18:06,640 Ima li to smisla? 1651 01:18:06,640 --> 01:18:07,060 Da. 1652 01:18:07,060 --> 01:18:09,300 Dakle, to je vjerojatno Najveći izazov. 1653 01:18:09,300 --> 01:18:10,430 A mi ćemo govoriti o tome da je u tren. 1654 01:18:10,430 --> 01:18:11,065 Da. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENTSKA 81: način razmišljao sam o tome je li potrebno isprintati - 1656 01:18:15,270 --> 01:18:15,490 >> JASON Hirschhorna: Čekaj. 1657 01:18:15,490 --> 01:18:17,580 Nemojte nam reći što ste učinili. 1658 01:18:17,580 --> 01:18:20,620 Idemo razgovarati u logici. 1659 01:18:20,620 --> 01:18:21,870 >> STUDENTSKA 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Koje je bilo pitanje? 1662 01:18:27,410 --> 01:18:28,892 >> JASON Hirschhorna: Vi samo podigao ruku. 1663 01:18:28,892 --> 01:18:31,600 Nije bilo pitanje. 1664 01:18:31,600 --> 01:18:32,520 Dopustite mi da ga prezentirati. 1665 01:18:32,520 --> 01:18:34,560 Dopustite mi samo o ovoj kratko. 1666 01:18:34,560 --> 01:18:38,400 Tako smo jedan piksel, želimo ponoviti ga, i horizontalno i 1667 01:18:38,400 --> 01:18:39,360 vertikalno. 1668 01:18:39,360 --> 01:18:48,920 Tako je idealno što radimo ovdje, mi pročitati u našem piksela, mi to napisati 1669 01:18:48,920 --> 01:18:51,690 No mnogi od puta. 1670 01:18:51,690 --> 01:18:54,720 >> No, onda mi imamo trik ovdje, jer onda želimo da preskočite 1671 01:18:54,720 --> 01:18:57,660 Sljedeći linije i napisati to na počevši od sljedeće linije. 1672 01:18:57,660 --> 01:19:02,960 Dakle, ako želimo ponoviti i horizontalno i vertikalno, što je 1673 01:19:02,960 --> 01:19:05,050 jedan dobar način za to - 1674 01:19:05,050 --> 01:19:06,780 jedna dobra, iako za to? 1675 01:19:06,780 --> 01:19:11,950 Dakle, mi ne trebamo stalno traže oko našeg datoteke staviti stvari. 1676 01:19:11,950 --> 01:19:14,360 >> To pitanje ne bi mogli imati imalo smisla, ali mislim 1677 01:19:14,360 --> 01:19:15,800 odgovoriti na to će vam pomoći. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENTSKA 82: Napravite niz? 1679 01:19:17,210 --> 01:19:20,090 >> JASON Hirschhorna: Pa razmislimo svake datoteke kao redom. 1680 01:19:20,090 --> 01:19:22,550 Razmislimo u smislu reda. 1681 01:19:22,550 --> 01:19:26,670 Ako mi imamo prvi red od naše male slika, možemo napraviti taj red 1682 01:19:26,670 --> 01:19:30,640 u velikom nizu od velike slike, a zatim ponoviti taj red međutim 1683 01:19:30,640 --> 01:19:34,250 mnogo puta to treba replicirati, nego ide piksel po piksel, 1684 01:19:34,250 --> 01:19:37,260 koji dobiva zbunjujuće kad bave datoteke. 1685 01:19:37,260 --> 01:19:38,730 >> Jer, ako smo imali - 1686 01:19:38,730 --> 01:19:41,260 Ja sam ponestaje prostora. 1687 01:19:41,260 --> 01:19:46,490 Ako je ovo naša sliku, a imamo da jedan piksel postoji, a mi želimo da se stavi 1688 01:19:46,490 --> 01:19:49,840 upravo tamo, još uvijek imamo neke stvari da je potrebno ići tamo kad smo 1689 01:19:49,840 --> 01:19:51,450 pisanju i stvaranju naše nove datoteku - 1690 01:19:51,450 --> 01:19:53,250 naša datoteka koja je dvostruko veći. 1691 01:19:53,250 --> 01:19:56,820 >> No, to je stvarno teško s funkcije datotečnih preskočiti oko na nove linije 1692 01:19:56,820 --> 01:20:00,260 kao što je to, a onda se vratiti ovdje i staviti stvari tamo. 1693 01:20:00,260 --> 01:20:04,500 To je gotovo nemoguće učiniti nešto kao što je to, ako to ima smisla. 1694 01:20:04,500 --> 01:20:10,180 Dakle, ako mislimo u smislu reda, što možemo se naš red, a zatim ga staviti - 1695 01:20:10,180 --> 01:20:11,720 replicirati redaka vertikalno. 1696 01:20:11,720 --> 01:20:15,860 >> A to je kako se nositi s promjenom veličine okomito nego vodoravno. 1697 01:20:15,860 --> 01:20:18,810 To je vrsta brzo i malo zbunjujuće. 1698 01:20:18,810 --> 01:20:22,375 Nažalost, naša je vrijeme isteklo. 1699 01:20:22,375 --> 01:20:27,340 Ja ću stajati vani za one od vas ovdje koji imaju pitanja u vezi 1700 01:20:27,340 --> 01:20:30,500 Problem set, uključujući i oporaviti. 1701 01:20:30,500 --> 01:20:32,320 >> Tako ćemo odgoditi za sada. 1702 01:20:32,320 --> 01:20:34,480 I opet, ako imate bilo kakvih pitanja, možemo razgovarati van. 1703 01:20:34,480 --> 01:20:38,294