JASON Hirschhorn: Sveiki, visi, kad 6 savaitės. Man malonu matyti jus visus gyvas ir gerai po viktorina 0, nes žinau, kad buvo šiek tiek grubus. Bet laimei, jūs visi padarė neįtikėtinai gerai. Ir todėl, kad yra nuostabus. Jei esate mano skyriuje, aš davė labiausiai jums atgal savo viktorinos jau. Jus pora, aš susitikti po klasę. Ir jei jūs pratęsimas studentas ir jūs negavote savo viktoriną atgal dar, jūsų TF tikriausiai su juo dirbti ir ją klasifikuoti, ir gauti jį atgal Netrukus jums. Taigi, mano pratęsimas studentų, kurie žiūrėti dabar - tikiuosi gyventi - Aš gausiu savo viktorinos netrukus taip pat. Mūsų darbotvarkė šiandien yra taip. Pirma, mes ketiname eiti per kai ištekliai, CS50 suteikia jums. Mes ketiname eiti per viktorina 0 kitą, ir Aš atsakyti į visus klausimus kas nors turi apie konkrečias problemas. Ir tada mes bus vyksta per Aš failo / O ir problema nustatyti 5. Tie du paskutiniai temos imsis iki iš dalies urmu šiandien. Aš įdėti šį sąrašą kiekvieną savaitę priminimas jums visiems, tačiau šerdies skyriuje, turime tik 90 minučių - mes negali apimti viską, kad aš norėčiau padengti jums vaikinai. Bet mes turime išteklių toną jums remtis, kaip jums žinoti, medžiagos ir darbai per jūsų problema rinkiniai. Priminimas, kad aš internete tekstą dėžė, įsteigti jums užpildyti, jei turite atsiliepimų apie mane, tiek teigiamą, tiek konstruktyvus, apie skyriuje. Kad URL yra teisingas čia. Taigi, prašome, skirkite laiko, jei turite kokių nors grįžtamasis ryšys, ar skyriuje metu, arba vėliau, arba po to, kai žiūrėti video internete, duoti man savo atsiliepimus. Aš tikrai vertiname bet ir visa tai. Taigi, aš jau turintys mažas pokalbiai su mano likimas studentai per savaitę - kaip aš ranka atgal viktorinos, kalbame apie Žinoma, pamatyti, kaip jūs darote. Ir viena tema atėjo vėl ir daugiau kalbame apie - į pirma - problema rinkiniai. Ir aš aplieti tą temą ant lentos dabar. Iš esmės, nėra skirtumo tarp posūkio į kažką, kad yra padaryta teisingai ir kažkas kad yra padaryta gerai. Dauguma žmonių buvo padaryti fantastinis kalbant apie teisingumą - 5 s arba 4 s visose psets. Dauguma žmonių vis tų visą laiką. Tačiau tik todėl, kad jūs padaryti kažkas teisė nereiškia, jūs padaryti kažką taip elegantiškai, arba efektyviai, arba kaip švariai, kaip jūs galėjo padaryti. Ir tai, ką dizainas - ir kiek mažesniu mastu, stilius - ašys yra skirti. Taigi, aš stumiu visus jus, ir kiti TFS stumia jums vaikinai, ne tik savo ruožtu dalykų, kurie yra teisingi, tačiau savo ruožtu į dalykus, kurie koduotų gerai. Nedaryti nereikalingų kilpos, ne perskaičiuojant kintamuosius, jei Jūs neturite. Pavyzdžiui, žvelgiant į problemą, 4, Dėdami plytų ekranas, kiekviena eilutė - kiekviena plyta teikiama eilutė yra pats y koordinatė - tas pats aukštis koordinuoti. Kad y koordinatė nereikėjo apskaičiuojamas viduje interjeras įdėtos už linijos, kad jūs tikriausiai naudojamas įdėti tuos plytas ekrane. Reikia tik būti skaičiuojamas kiekvieną kartą įjungtas eilutę, arba persikėlė žemyn eilutę. Taigi sako, kad jei yra 10 plytų eilutėje, kiekviena plyta gali turėti tą patį y koordinatė, ir kad y koordinatė tiesiog galima apskaičiuoti kartą visiems laikams iš tų. Ji nebūtinai turi būti apskaičiuojama 10 kartus, nei tai daro skaičiavimas poreikis atsitikti faktinis skambinimo funkcijos - nauja gracked skambinimo funkcijos. Taigi, jei tai buvo šiek tiek painu Jums daugiau bendrine, viskas, kad nereikia atsitikti kiekvieną kartą jūs einate per DĖL kilpa turi būti ne įdėti viduje už linijos, ir neturėtų atsitikti kiekvieną kartą jums eiti per už linijos. Kitas geras dizainas pavyzdys matėme skirtame 15 3 savaitės, galima laikyti kelio nuo nulio. Taigi, kai jūs inicijuoti valdyba, jums sutaupyti - į pasaulinį kintamąjį, galbūt - x ir y koordinatė lygi nuliui. Ir tada, kai jūs - savo judėjimo funkciją, kai jūs padarote sėkmingas žingsnis, galite atnaujinti vieta nulio. Kad būtų išgelbėti jus nuo būtinybės daryti įdėtos UŽ kilpos atrodo per įlipti kiekvieną kartą jūsų judėjimo funkcija ir rasti nulį, arba rasti plytelių, ir tada patikrinkite, kas šalia jo. Vietoj to, jūs turite vietą nulis, galite tiesiog pažvelgti aukščiau, žemiau, ir į kairę ir į dešinę nuo jos, rasti plytelių ieškojote. Taigi, atsižvelgiant į programų negu mes raštu, jie niekada pakankamai didelis, kad kai kurie iš šių dizaino sprendimus yra tikrai ketina trukdyti savo programa, arba padaryti jį paleisti lėčiau, arba galbūt net pritrūksta atminties. Bet mes vis dar stumia jus vaikinai rašyti elegantiškas ir efektyvus kodas, kaip įmanoma. Taigi, jei jūs galų gale rašyti dalykus kad turi gerokai didesni apimtis, jie bus parašyta gera projektuoti be to, yra teisinga. Taigi iš turite skaičius atnešė, kad iš. Štai ką mes ieškome - kažkas, ką mes ketiname ir toliau stumti jums vaikinai. Jei kada nors turite kokių nors klausimų apie dizainas jūsų programoje, nedvejodami pasiekti, kad mane, ir aš laimingas vaikščioti per savo programą su jumis, ir atkreipti dėmesį į kai dizainas sprendimus jums padaryti, ir duoti jums kai kurie patarimai, kaip padaryti dar geriau dizaino sprendimus. Taigi, mes ketiname pereiti kalbėti apie Testas 0. Prieš tai darome, ar kas nors turite kokių nors klausimų apie tai, kas Aš taikomas iki šiol? [Čežėjimas TRIUKŠMO] JASON Hirschhorn: septynias sekundes. Gerai. Pakalbėkime apie Testas 0 truputį. Dauguma iš jūsų turite savo Viktorina 0 galinį. Jei ne, tikiuosi pamenate jį šiek tiek. Bet jei jūs atlikote testą 0, tada taip pat turi prieigą prie PDF internete bandinių tirpalus. Ar kas nors turite kokių nors klausimų prieš mes peršokti į savaitės medžiagą apie pirma problema viktorina 0 - kodėl atsakymas kas tai yra? Ar kas nors supainioti apie ką nors? Net jei jūs turite problemų darbe, tačiau tiesiog norėtų man paaiškinti šiek tiek daugiau, aš laimingas, kad tai padaryti dabar. Taigi, aš paklausiau jūsų vaikinai būkite pasiruošę su kai mintys apie Testas 0. Taigi, kas norėtų gauti mums prasidėjo su klausimu ar komentarą apie Testas 0? [POPIERIAUS čežėjimas] JASON Hirschhorn: Ne visi padarė puikiai. Taigi aš žinau [juokiasi] ten turi būti kai kurie klausimai apie Testas 0. Gerai. Taip. Ompica. OMPICA skaičius: 10. JASON Hirschhorn skaičius: 10. Kurių vienas buvo numeris 10? OMPICA: - JASON Hirschhorn: Aš haven't - OMPICA: yra - JASON Hirschhorn skaičius: 10 buvo aštuoneri I - raštu Aštuoni i? OMPICA: Taip. JASON Hirschhorn: Gerai. Taigi, dar vienas klausimas, kurį gali turėti paprašė buvo aš pranašiškas? Atsakymas yra taip. Skyriuje prieš viktoriną, aš paprašiau jus vaikinai kodas abu sterlingų ir aštuonių iki i. Abu atsitiko ant viktorina. Taigi, tikiuosi, jums mokama dėmesį į tai. Ir jei jūs turėjo, tada jums reikės tikriausiai padaryta gerai šių dviejų. Tačiau aštuonių iki i, mes ne iš tikrųjų kodas tai klasėje, bet jis buvo vėl paklaustas viktorinoje. Taigi iš ko imtis pora dėmesį, kai kodavimo Aštuoni i. Pirmas dalykas, už klausimą, buvo kad jums reikia patikrinti, ar eilutė buvo lygus nulis. Pora žmonių bandė patikrinti vėliau programoje, jei ai laikiklis buvau - taip specifika tuo, kad eilutę - buvo lygus nulis. Bet atsiminkite, kad niekinis iš esmės - tai gerai, kad galvoti apie null žymi nuliniu žymeklis - rodyklę į nulinę - Kažkur atmintyje, kur jūs niekada negali pasiekti. Taigi, jei kažkas yra lygus nulis, jūs žinau, kad tai nebuvo rengiami, ar ten nieko nėra. Taigi s char žvaigždė, s laikiklis i char. Taigi prasminga lyginti s NULL, bet ai laikiklis i nulis. Bet vėl - kad buvo pirmas dalykas, kad jums turėjo padaryti - įsitikinkite, kad jūs iš tikrųjų gavo tikrą eilutę. Be to, jūs norite eiti per kiekvieną simbolį į eilutę. Ir taip, kad būtų kaip us laikiklis Aš, pavyzdžiui, jei aš jūsų iteratorius. Ir imtis tą simbolį ir gauti savo tikrąją vertę. Jūs turite jį saugoti kaip char, bet ASCII reikšmė už nulį - nulis kaip simbolį - faktiškai nėra sveikasis skaičius nulis. Tai kai kurių kitų skaičių, kad jūs galite ieškoti ASCII lentelėje. Taigi, vienas iš būdų ištaisyti, kad - tikriausiai geriausias būdas ištaisyti kad - tai atimti iš jo charakteris vertė - nulio kaip simbolį. Taigi minus kabutes, nulis, kitas kabutes. Tai užims kokia skaičius jūs turite kaip char, ir gauti jį lygūs skaičius faktiniu sveikojo skaičiaus. Ir tai yra labai panašus į požiūrį Daug žmonių paėmė į problema nustatyti 2, su Cezario ir Viginere - tie šifrai, kai buvo sukant juos. Taigi, kai jūs turite tai, kaip iš skaičiaus nuo nulio iki devynių, tada - priklausomai nuo kur jis eina į galutinį skaičių - jūs turite padauginkite jį pagal 10 galios. Kai kurie žmonės persikėlė iš nugaros priekinis ir dauginama individą skaičius pasiekė 10 galios. Kai kurie žmonės persikėlė iš pirmyn arba atgal - ir tt paėmė aukščiausia eilės numeriai yra pirmasis - ir būtų galima sutaupyti tuos pasaulinės kovos su kintama. Ir tada kiekvienas per Time kilpa, dauginti, kad milžinas pasaulio kovoti kintamąjį 10, kad vietos į kitą char. Taigi, tai buvo šiek tiek klaidina, be man rašyti ant lentos. Bet mėginio tirpalas yra prieinamas jums. Bet tai buvo dideli dalykai mes ieškojome. Taip pat įsitikinkite, kad kiekvienas individualių savybių iš tikrųjų buvo simbolis nuo nulio iki devynių, o ne kai kurių kitų simbolių, kaip A, pavyzdžiui. Tai buvo tai, ką mes buvo ieškote tame klausimas. Ar tai atsakymas į jūsų klausimą? OMPICA: Taip. JASON Hirschhorn: Gerai. Ar yra kokių nors kitų klausimų apie Testas 0? Ką apie kompiliavimo? Visi sudarant tiesa? Ne. Nebuvo - [Juokiasi] Bet apie klausimai kompiliavimo procesas? Wow. [POPIERIAUS čežėjimas] JASON Hirschhorn: Taip. Michael. MICHAEL: Ar skaičius 7 - atsitiktinis? JASON Hirschhorn skaičius: 7. Skaičius 7 buvo gauti atsitiktinį sveikąjį skaičių. Puikus. Taigi jums suteikta sveikasis a ir sveikas b ir norite atsitiktinis sveikasis skaičius tarp a ir b. Mes iš tiesų gali parašyti šį vieną ant lenta, nes tai vienas buvo viena eilutė kodo - vienas iš būdų tai padaryti. Taigi, mes teikiama drand kaip funkcija galėtume naudoti. Ir ką drand - darant prielaidą, kad jis buvo sėjami - Ką drand grįžti? Michael: tarp 0,0 ir 1,0 plūdė. JASON Hirschhorn: skaičius - taip. Tarp 0 ir 1 skaičius. Ir todėl mes turime b ir. Ir tada mes turime atsitiktinį skaičių tarp 0 ir 1 suteikta mums drand. Kai kurie žmonės bandė įdėti b arba b atėmus , ar kažkas viduje tie skliaustelius. Tai reikštų, kad jie argumentai šia funkcija. drand nesiima jokių argumentų - kaip getString nėra nesiima jokių argumentų. Taigi, tai tik atidaryti skliaustas, netoli paren - ir kad pati yra skambinimo funkcijos. Ir tai suteikia jums numerį tarp 0 ir 1. Žinoma, mes turime visą eilę kad numeriai gali būti in Pasakykite, jei b yra 10 ir yra 5, mes tikrai norite numerį su 5 diapazone. Taigi kitas dalykas, kurį turime padaryti, tai padauginti diapazono b minus. Taigi, darant prielaidą, kad manimi padauginta. Ir tai jums duos mums numerį per tam tikrą intervalą. Ir kad konkrečios ribos yra skirtumas tarp b minus. Ir, pagaliau, kad bus pateikti tik nuo - pasakyti tarp b minus spektrą yra 5, tai duosiu mums skaičius nuo 0 iki 5. Bet jei iš tikrųjų yra 5, turime padidinti šis intervalas iki kur jis iš tikrųjų turėtų būti, pridedant. Taigi, kad gauna logika teisę. Ir tada jūs turite kitas klausimas? MICHAEL: Ne Aš tiesiog jaustis tikrai kvailas dabar. [Juokiasi] JASON Hirschhorn: Ne Negalima jaustis tikrai kvailas. Kovojo žmonių skaičius su šiuo klausimu. Ir tada kitas klausimas, drand, jūs sakėte, suteikia Jums trintuve - grąžina plūdę. Tačiau ši funkcija iš tikrųjų paprašė už sveikasis skaičius turi būti grąžintas. Jums nereikia mesti tai aiškiai iki sveikojo skaičiaus, nes tai operacijos bus traktuoti kaip visų a plaukti - kaip slankaus kablelio skaičių. Teigiamas valios - net jei tai yra sveikasis skaičius, tai bus dauginamas teisingai. Visi daugybos veiks. Jums nereikia mesti jį čia. Tiesą sakant, jums nereikia mesti. Tai - jei būtų mesti numeris tai tarp 0 ir 1 - atsitiktinis skaičius, slankiojo kablelio - tada jis bus arba tik 0 arba 1, todėl jūs prarasite visą tą tikslumo. Bet pabaigoje, kai grįšite, jis automatiškai gauna siunčiami atgal kaip sveikasis skaičius. Taigi jums nereikia daryti kad liejimo sau. Taigi, tai buvo atsakymas kad klausimas, skaičius 7. Visi kiti klausimai viktorina 0? Taip, Annie. Annie: Kai mes naudojame rekursyvūs - kai mes naudojame iteraciniais kilpas? JASON Hirschhorn: Kada naudoti rekursywny - tiek apskritai privalumus ir trūkumus rekursijos palyginti iteracinis metodas. Ar kas nors pasiūlyti Pro arba pa? Prašome? Negali kas nors. Kas gali pasiūlyti Pro arba pa? [POPIERIAUS čežėjimas] STUDENTŲ 1: Ciklas yra mažiau kodavimas - mažiau rašyti? JASON Hirschhorn: Taigi paprastai, rekursija ypač funkcija - arba kaip suliejimo algoritmas rūšiuoti - kuris skolina pati į grįžtamojo požiūrį - galėtų būti paprastesnis koduoti rekursyviai. Ir tiesiog padaryti daugiau prasmės daryti rekursyviai. Taigi, kad būtų Pro rekursijos. Kiti? Taip? STUDENTŲ 2: con rekursijos - Jis naudoja daugiau atminties. JASON Hirschhorn: Taigi visiškai teisus. Grįžtamojo funkcija nuolat pridedant kamino rėmai į steką. Taigi, jei jūs veikia ant daug numerius ir skambinti tai veikti daug, tada jums bus tikrai užima daugiau atminties, o iteracinis metodas bus įdėti tik vieną kamino rėmas ant kamino, nes viskas vyksta per vieną funkciją. Visi kiti privalumai ir trūkumai? Taip. STUDENTŲ 3: Argumentai "už rekursijos. Jūs neturite nustatyti, iš anksto, kiek kartų kodas turi būti pakartotas. Jūs galite turėti iš anksto nustatytų kartų, kad jūs turite pakartoti, tada rekursija yra geriau, nes ji užima tokį rezultatą. JASON Hirschhorn: Aš manau, kad tai tiesa. Bet manau, kad abiem atvejais Jūs niekada - jūs tikriausiai kažkiek įvestis iš vartotojo. Ar ši funkcija būtų turėti tam tikrą įvestį kad būtų nustatyti, kiek kartų ji turėtų veikti. Taigi paprastai, tai būtų ne sunku kodą - net kartotinį metodą - kaip daug kartų, kad kilpa turėtų būti paleisti. Ar turite dar buvai galvoju apie Annie? Gerai. Taigi tie, kurie tikriausiai du - Didžiausias pro ir didžiausia con palyginti rekursywny iteracinis metodas. Gerai. Kitoks apie Testas 0? Pereikime. Failo I / O. Yra nuostabus trumpas šią savaitę failą I / O, kad tikiuosi, turite stebėjo keletą kartų, ir žavisi. Daug darbo nuvyko į, kad ir aš girdėjau, jis yra neįtikėtinai naudinga. Aš taip pat buvo įtrauktas į šios skaidrės nuorodą jei jūs neturėjote galimybė žiūrėti 10 kartų. Taigi, mes ketiname trumpai eiti per pagrindiniai žingsniai į atidarymo ir darbo su failais, o tada mes ketiname pasinerti į kodavimo problemos prieš Nagrinėjant šią problemą, rinkinį. Taigi dar kartą, aš ruošiuosi įdėti šią ant ekranas, bet aš ruošiuosi kalbėti tik minutę apie tai, ką mes čia darai su byla I/O-- Ką tai reiškia? Tai reiškia, kad mes galime sukurti mūsų programos, ir tada mūsų programas išeiti, o ne padarė jokio poveikio pasaulis ne mūsų programą. Bet kai mes pradėti dirbti su failais - ir juos skaityti ir kurti jie - mes galime turėti tam tikrą poveikį pasaulis ne mūsų programą. Tiesiog, pavyzdžiui, jei "Microsoft Word" nesugebėjo atlikti bet kokius Word "dokumentus, tada kai programa "Microsoft Word mesti, visi jūsų darbai bus dingo, ir jis būtų tikrai nenaudingas. Mes galiausiai nori, kad būtų galima rašyti programas, kurios gali turėti įtakos juos supantį pasaulį, tiek atsižvelgiant į sudėtingų įėjimai - Kalbant apie failų ir per failus, taip pat sukuriant įdomu ir įtikinamų išėjimai - kalbant apie įvairių tipų failus. Taigi tai yra, kodėl mes pradedame išmokti dirbti su failais. Tiksliau, tai, ką mes darome taip. Tai labai paprasta. Yra tik pora žingsnių, ir jie išvardyti čia šiuo kodu. Taigi, mes ketiname eiti per šis kodas eilutė po eilutės. Pirma, jums pamatyti, pabrėžė - kai dirbate su failu, nepriklausomai nuo failo tipo jis yra, turite ją atidaryti. Ir tai yra, ragindamas fopen - čia. Jūs taip pat failo pavadinimą. Jei failas yra ne jūsų katalogą, arba aplanką, kuriame ši programa gyvenimas, tada jums taip pat reikia įtraukti Kelias į kur, kad failas yra. Mes ketiname daryti prielaidą, kad šis failas, vadinamas "text.txt", - paprastas tekstinis dokumentas - yra tame pačiame aplanke kaip šios programos. Štai dar vienas dalykas, išlaikyti protas - kad jei norite atidaryti failą kažkur kitur, jūs iš tikrųjų reikia įtraukti savo vietą. Antra, jūs galite praeiti argumentą fopen, ir tai, ką norite daryti su failu. Yra trys pagrindiniai argumentai, kad jūs ketinate pereiti į fopen. Kas gali duoti man tuos tris? Kas gali man duoti vieną iš jų? Taip. STUDENTŲ 4: failo pavadinimas? JASON Hirschhorn: Atsiprašome. Trys pagrindiniai argumentai galite pereiti kaip antrasis argumentas fopen. Tu teisus - failo pavadinimas yra pirmasis argumentas. Tačiau antrasis argumentas yra fopen paprastai trys stygos, ir - taip. Aleja. Aleja: už Papildyti. JASON Hirschhorn: jei norite pridėti į failą, kuris jau egzistuoja. STUDENTŲ 5: R skaitymo. JASON Hirschhorn: R jei nori skaityti iš failo. STUDENTŲ 6: W rašyti. JASON Hirschhorn: ir W, jei noriu rašyti į failą. Taigi šiuo atveju, mes raštu į failą, todėl mes turime m. Atidarius ją, jūs taip pat turite išsaugoti failą kažkur, ir kad su kodą į kairės pusės priskyrimo operatorius - Kuriu žymiklį į failą vadinamas, šiuo atveju, byloje. Mes neketiname jaudintis kas tai visi dangteliai FAILO dalykas yra. Užtenka pasakyti, tai ilgai srautas nulių ir. Ir tai, kaip mes ketiname eksploatuoti ją ir suprasti. Kitas dalykas, kurį turime padaryti, - ir tai yra labai svarbu - kai atidarote failą - Tiesą sakant, kai skambinate malloc, už pavyzdys, ir gauti šiek tiek atminties ir bandyti ir išsaugokite jį žymiklį, visada norite įsitikinkite, kad funkcija negrįžo null. Taigi šiuo atveju, mes patikrinti, kad tikri, kad mes iš tikrųjų atvėrė pateikti teisingai, ir ten buvo ne mūsų programoje klaida. Be to, kai mes patikrinti įsitikinti kad mes turime darbo bylą, galime rašyti ar skaityti, arba pridėti prie bylos medžiagos. Šiuo atveju, aš tiesiog spausdinti viena eilutė į šį failą. Kaip man žinoti, kad? Na, aš naudoju šią funkciją vadinamas fprintf. Visas funkcijas, jums bus naudojant kai raštu ar skaityti iš, arba manipuliuoti failus bus panašus į funkcijos, kurias mačiau anksčiau, bet prasideda raide F, stovėti failą. Ir fprintf, skirtingai nei mūsų įprasto spausdinti programa, priima vieną papildomą argumentą, ir kad yra failas, kuriame jūs norite spausdinti šį liniją. Aš neturiu nieko iš ohai teisus. Aš neturiu trečdalį argumentas printf - arba antrasis argumentas printf, Trečiasis argumentas fprintf, nes aš neturi jokių rezervuotų čia. Nesu įskaitant visus kintamuosius. Bet vėl, fprintf ir visų šių failą funkcijos, kurios veikia su failais paprastai reikės failą , dėl kurių jie veikia. Galiausiai, paskutinis svarbus dalykas padaryti yra uždaryti bylą, kaip su - kai mes malloc kažką, norime išlaisvinti kažką, kad mums turi atminties nutekėjimas - mes norime uždaryti savo failą. Jei ši programa išėjo be uždarymo failą, šansai yra, niekas eiti negerai, ypač jei jis buvo mažas failas. Bet tai yra tikrai gera kodavimo stilius ir praktiškai visada uždarykite failą kai baigsite jį naudoti. Taigi, tai yra failo pagrindai I / O. Jūs tikriausiai matė, kad prieš arba žiūrėdavau ją toje žiauriai trumpas. Ar kas nors turi kokių nors klausimų, prieš mes einame į tikrą praktiką kodavimo problemos, apie failą I / O arba žingsniai aš tiesiog nuėjo per? [Rašyti GARSAI] JASON Hirschhorn: Ar jums turiu klausimą, AVI? AVI: Ne JASON Hirschhorn: Gerai. Aš ruošiuosi laukti kito septynios sekundės. [Juokiasi] Tai tikrai geras patarimas. Vaikinai tiesiog nepatinka klausinėti. Tai gerai. Gerai. Taigi, pirmasis mūsų praktika problema yra, mes esame vyksta dubliuoti funkciją komandinės eilutės įrankis, kad jūs tikriausiai naudojamas prieš - kopija - kopija įrankis. Jei įvesite cp ir perduoti jį du argumentai į savo terminalą, galite nukopijuoti failą. Ir tai, ką mes ketiname rašyti dabar. Taigi dar kartą, skaityti nuo šios skaidrės, aš jums parašyti programą, kuri trunka du ir tik du komandų eilutės argumentai - šaltinio failo ir paskirties failas - ir nukopijuoja šaltinio turinys failą faile vienas baitas metu. Štai daug prašyti. Vėlgi, geras požiūris į tai, kad ne eiti tiesiai į C kodą, tačiau ją padalyti į keletą etapų pora. Pirmiausia, pagalvokite apie logika - tiksliai ką aš prašau jus padaryti - ir suprasti visus žingsniai šia problema. Ne C, tiesiog kai Pseudocode, ar net psichikos modelis kas vyksta. Be to, kai jūs turite Pseudocode žemyn, išsiaiškinti, kaip Pseudocode žemėlapiai ant įrankių ir daiktų mes išmoko naudotis C Ir pagaliau, kai jūs turite viską, kartu, galite koduoti problemą. Paimkite 5 iki 10 minučių dirbti dėl šios problemos. Aš įdėti instrukcijas atgal į viršų per sekundę. Ir tada mes ketiname eiti per Pseudocode ir kodas jis gyvena kaip grupė. Jei turite kokių nors klausimų, o jūs dirba tai, nedvejodami pakelti ranka, ir aš ateisiu aplink ir į juos atsakyti. STUDENTŲ 7: Ar galiu servetėlės popierėlis? JASON Hirschhorn: Kas naujo? [Rašyti GARSAI] JASON Hirschhorn: Gerai. Eikime per Pseudocode pirmas, ir tada aš duosiu jums pora daugiau minutes baigti kodavimo. Kas norėtų pradėti mane su pirmoje eilutėje Pseudocode šią funkciją? STUDENTŲ 8: Įsitikinkite, kad Jums buvo suteikta du failus. JASON Hirschhorn: Gerai. Ir jei mes ne? STUDENTŲ 8: Norėčiau grįžti 0. JASON Hirschhorn: Ar grįšime 0? STUDENTŲ 8: Grįžimas - ištrinant. Atsiprašau. JASON Hirschhorn: Taip. Tikriausiai ne 0. Kadangi 0 reiškia, viskas buvo gerai. Gerai. Štai pirmoji eilutė iš Pseudocode. Kas užima antrą eilutę Pseudocode? STUDENTŲ 9: Atidarykite abu failus? JASON Hirschhorn: Atidarykite abu failus. Gerai? STUDENTŲ 10: Patikrinkite jei failas yra NULL? JASON Hirschhorn: Patikrinkite tikrai nei yra NULL. Kaip panaikinti - Slash 0 - yra tai, kad NULL? STUDENTŲ 11 Ne JASON Hirschhorn: Tai ne NULL. Tai vadinama NULL terminatorius. Tai iš tikrųjų rašomas tik su viena l. Taigi tikrinant kažką prieš tai - tai tikrai pobūdis - taip tikrinant kažką prieš, kad būtų ne tas pats, kaip patikrinti, ar jis Lygu NULL. Ir kai kurie žmonės - savo viktorinos ir jų problemos rinkiniai - turime du iš jų painioti. Bet du iš jų yra iš tiesų skirtingos. Vienas baigiasi eilutę - vienas yra rodyklė į 0. STUDENTŲ 12: Kodėl gi ne jums patikrinti įsitikinkite, kad failai yra ne NULL Prieš juos atidaryti? JASON Hirschhorn: Taigi atvira taupo kažkas tame faile. Ir jei grįžti čia - todėl ši eilutė - fopen - duos jums adresą ir parduotuvę kad adresas failo, jei ji veikia. Jei jis neveikia, tai bus saugomi NULL - STUDENTŲ 12: oh. Gerai. Turiu tave. JASON Hirschhorn: Be failą. Taigi, jūs negalite patikrinti for null prieš jūs atidarė jas. NULL reiškia kažkas nepadarė dirbti teisingai. Gerai. Taigi, įsitikinkite, kad nė vienas nėra? Ar yra? Ką manote? Mes eiti su tuo. STUDENTŲ 13: Ar. JASON Hirschhorn: Ar? Nei yra? STUDENTŲ 13: Ar. JASON Hirschhorn: Gerai. Mes, atrodo, kad kai kurie sutariama, kad. Nei NULL. Gerai, kitą eilutę Pseudocode. Kas nedavė man linija Dar neužsiregistravęs? Mes laukiame Jūsų. Taip. STUDENTŲ 14: Jūs turite perskaityti nuo pirmos failo? JASON Hirschhorn: Gerai. STUDENTŲ 14: Arba mes naudojame fscanf arba kažkas panašaus, kad pirmą failą? JASON Hirschhorn: Taigi mes norime skaityti nuo pirmos failo ir - tegul įdėti, kad čia. Skaityti iš šaltinio failo. Ir tada, ką mes darome, kai mes skaityti iš šaltinio failo? Kažkas? STUDENTŲ 15: Rašyti į Paskirties failas? JASON Hirschhorn: Mes rašome Paskirties failas, ir - Gerai. Ką dar mes trūksta? Kažkas, kas nedavė man eilutėje kodas dar - iš Pseudocode. Taip. STUDENTŲ 16: Gal galite visada patikrinkite ar ten kažką skaityti, kaip kitą eilutę? Tai yra, pavyzdžiui, į kitą eilutę, pamatyti, jei ji egzistuoja. [ELEKTRONINIS PYP] JASON Hirschhorn: Oi. Tai mano žurnalinė programinė įranga. Taip? STUDENTŲ 16: Taip. JASON Hirschhorn: Taigi suteikti jis man dar kartą. STUDENTŲ 16: Patikrinkite, ar nėra dar kitą eilutę iš šaltinio failo skaityti. JASON Hirschhorn: Gerai. Taigi mes ne skaityti linijos - skaitė baitų čia - bet jūs teisingai. Mes norime, kad skaityti ir rašyti iki nėra daugiau baitų. Gerai. Ir taip tai tikrai turėtų būti atitrauktas tiek, nes jie pagal ten. Teisė? Kol mes iš baitų, mes ketiname skaityti iš šaltinio failo ir rašyti į rezultatų failą. Ir tada, kas yra paskutinis linija Pseudocode? Kažkas, kas nedavė man kažkas dar. STUDENTŲ 17: Uždarykite failus? JASON Hirschhorn: Būtent. Uždaryti failus. Taigi mūsų Pseudocode. Aš ruošiuosi įdėti Pseudocode į gedit, ir po poros minučių mes bus koduoti tai kartu. Gerai. Leiskite mums pradėti kaip grupė. Nishant, turiu naują failą. Aš ką tik pradėjo tai padaryti. Untitled Document 1. Kas pirmas dalykas, kurį aš turėčiau daryti? Nishant: Įtraukti bibliotekas? JASON Hirschhorn: Gerai. Su kokiomis bibliotekomis? Nishant: stdio.h, stdlib.h, manau? JASON Hirschhorn: Gerai. Kas yra stdlib už? Nishant: Pamiršau. JASON Hirschhorn: Gerai. Taigi yra stdio. Ką turėčiau daryti, dar prieš Aš pradedu kodavimo? Nishant: Rašyti antraštę? JASON Hirschhorn: Kaip man gauti tai spalvos? [Tarpines BALSAI] Nishant: Kaip jums jis spalvos? JASON Hirschhorn: Kaip man spalvos kodavimas? Nishant: Aš nežinau. Oh. Išsaugoti. JASON Hirschhorn: Save. Taip. Turėčiau įrašyti jį kaip. C. Taigi išsaugokite jį darbalaukyje kaip cp.c. Saldus. Ir jei aš noriu gauti visą stilių taškai, ką turėčiau yra viršuje? Nishant: Jūs galite rašyti savo vardą, pavardę, pavadinimą programos, ir tam tikslui programos, taip pat? JASON Hirschhorn: Atrodo gerai. Puikus. Taigi, kai jūs pradėjote mums ne puikiai. # Include - mes taip pat rašyti - Gerai. Taigi, manau, aš visi nustatyti eiti. Kas turi pirmą eilutę kodo man - arba pirmosios eilučių kodo, kad ji imsis, kad patenkinti mūsų pirmasis paaiškinimus Pseudocode? Jūs. STUDENTŲ 18: Ar nebūtų int argc, tada char * argv? JASON Hirschhorn: Manau, tu teisus. Keiskime jį į int pagrindines, atviras paren, int argc, kablelis, char * argv? Kaip tai? STUDENTŲ 18: Kilpos. JASON Hirschhorn: Kilpos. Atidaryti laikiklis, skliaustai uždaromi, arti tėvų. Tobula. Dabar galiu imtis komandinės eilutės argumentai. Gerai. Užtikrinti mes skirti du failus. Jūs galite duoti man, kad taip pat. STUDENTŲ 18: Jei argc - tai vienas nėra lygi 3. JASON Hirschhorn: Jei atidaryti skliaustas argc nėra lygūs 3? STUDENTŲ 18: Taip, jūs grįšite 1 arba nieko. JASON Hirschhorn: Atsiprašome. STUDENTŲ 18: Grįžimas 1 arba nieko. JASON Hirschhorn: Atgal 1. Gerai? Didysis. Atidarykite abu failus. Kas gali man padėti atidaryti abu failus? Kas nedavė man kodą dar? Kurt? KURT: Taigi visi dangteliai F I L-E žvaigždė kodo. JASON Hirschhorn: Aš ruošiuosi imti balses. Tai yra kietas. Tai kaip Tumblr. STUDENTŲ 18: Lygu fopen - JASON Hirschhorn: Lygu fopen? STUDENTŲ 18: Atidaryti skliaustas, argv, skliaustai atidaromi. JASON Hirschhorn: palaukti. Atsiprašau. Atidaryti skliaustas. Gerai. STUDENTŲ 18: Taip. Argv sub 1. JASON Hirschhorn: Sub "1? STUDENTŲ 18: Taip. Argv skliaustai atidaromi 1 - Taip. Ir tada kablelis, ir tada atidaryti dukart citata, r, dvigubos kabutės, artimi skliaustas, kabliataškis. JASON Hirschhorn: Sweet. O ką apie kitur? STUDENTŲ 18: Labai panaši, bet vietoj S-R-C, jūs jį vadiname D-S-P. JASON Hirschhorn: Oo! Man patinka, kad. STUDENTŲ 18: Tiesiog D-S-P. Taip. Ir tada argv, atvirą laikiklis, 2. Taip. Ir tada w vietoj r. Taip. JASON Hirschhorn: Didysis. Kitas pora eilučių. Be to, jei kas nors turi ką pridėti prie linijos, kad mes padaryti, nedvejodami pridėti tų taip pat. Įsitikinkite, nei yra NULL. Kas gali duoti man kodą man reikia patenkinti, kad Pseudocode linija? Lankininkas. ARCHER: Jei src lygu lygu NULL arba DST lygu lygu NULL, tada grįžti - JASON Hirschhorn: Kas? ARCHER: Grįžimas 2? JASON Hirschhorn: Grįžimas 2. Taigi, jei atviras skliaustas src Lygu Lygu NULL, arba - kad ir ką thing's - vamzdis? Vamzdis? Mes jį vadiname vamzdis. Vamzdis, vamzdžiai, dst lygu lygu NULL, grąžina 2. Gerai? Kol mes iš baitų - mes tarsi praleista daugiau šio žingsnio nuo Pseudocode dalis eiti į čia. Bet kol mes iš baitų - Ką tai skamba? Kokios C struktūros - bet aš ne naudoti žodį struktūrą, nes mes ketiname pradėti naudoti kad kitais atvejais - bet C priemonė daro, kad skamba? STUDENTŲ 19: kilpa. JASON Hirschhorn: kilpa. Panašiai skambanti kilpa. Taigi, kas gali duoti man pirmą eilutę iš kilpos kodą čia? Taip pat galite pasirinkti, kokios kilpa norite, jei jūs suteikiate man tai kodo eilutę. Yra trijų rūšių. Jūs gaunate pasirinkti. Siūlyčiau vieną iš jų. Avi. Kuris jums reikia? AVI: UŽ. JASON Hirschhorn: UŽ. AVI: int i lygi nuliui. JASON Hirschhorn: Gerai. AVI: Ši dalis Nesu tikras apie. Bet aš mažiau nei jų dydis star šaltinio? Aš nesu įsitikinęs, kad. JASON Hirschhorn: Gerai. AVI: Kadangi jūs norite dydis failo, tiesa? JASON Hirschhorn: Taigi tai tikriausiai nebus suteikia mums faktinis dydis failą baitais. Taigi, ką dar galėtume padaryti? Kas yra kita kilpa tipas? Arba mes turėtume klijuoti su už linijos? STUDENTŲ 20: Ar jūs darote, o kilpa? Ir tada, ką norite padaryti, tai you'd - nes mes turime char * failo. Taigi, jei mes tiesiog laikyti incrementing kad kol mes norime rasti NULL simbolį jo pabaigos? Ar ne, kad ne kaip bylos veikia? JASON Hirschhorn: Taigi, mes galime išlaikyti incrementing char * kol randame NULL - STUDENTŲ 20: Iš esmės nesustoti požymis charakterio kol mes hit failo pabaigos. JASON Hirschhorn: Taip. Štai ką mes norime daryti. Norime, kad skaitymo, charakterį pagal charakterį, kol mes gauti failo pabaigos. STUDENTŲ 20: Taip. Ieškoti - kas baigiasi arba baigti ženklas ne iš tekstinio failo pabaigoje. JASON Hirschhorn: Gerai. Taigi, kai mes gauti į failo pabaigą - kaip mes žinome, mes pasiekėme failo pabaiga? Jei aš skambina - todėl galime atsitraukti. Kas yra funkcija? Vykime į šią eilutę čia. Skaityti iš šaltinio failo. Kas gali man duoti, kad kodo eilutę? STUDENTŲ 21: Fscanf? JASON Hirschhorn: Fscanf. Gerai. Ką daryti, jei noriu skaityti, labai Tiksliau, vienas baitas? STUDENTŲ 21: Nežinau. JASON Hirschhorn: Gerai. Net paprastesnis nei fscanf - kas yra - Noriu skaityti iš šaltinio failo? Skaityti iš šaltinio failo. Kas yra funkcija - taip. STUDENTŲ 22: Tai fread? JASON Hirschhorn: fread. Manau, galime klijuoti su kad vienas dabar. Kokios argumentų nėra fread imtis? STUDENTŲ 22: Tikriausiai failo tipas, ir tada vieta faile? JASON Hirschhorn: Ką aš galiu įvesti čia išsiaiškinti, kokio tipo argumentai fread trunka? KELI STUDENTAI: Vyras fread. JASON Hirschhorn: Vyras fread ir fwrite. Atrodo, kad jie pakabinti kartu. Taigi fread trunka kaip daug argumentų? STUDENTŲ 23: ​​keturi. JASON Hirschhorn: Ji mano keturis argumentus. Tai užtrunka žymeklį, dydį, ir kad dalykas, kuris yra keista, o kai byla. Gerai? Leiskite skaityti apie tai čia. "Funkcija fread skaito n memb elementai duomenimis, kiekvienas dydis baitų ilgio, nuo upelio, į kurį nurodo transliuoti, saugoti juos į vietą suteiktas žymeklis. " Taigi keturis argumentus. Kodėl ne aš tiesiog nukopijuokite šį, ir įklijuokite jį čia. Gerai. Taigi, kas gali pradėti pildyti šie man argumentai? Avi. AVI: Išimkite tuštumą. Įdėkite tik src. Išimkite žymeklį ir žvaigždė. Įdėk src. Tada - JASON Hirschhorn: Taigi, aš ruošiuosi sustabdyti jūs ten, nes tai neteisinga. Tu teisus su src, bet kur src turėtų eiti? [Tarpines BALSAI] JASON Hirschhorn: jis turi eiti per čia. Štai src - mūsų src yra tipo. Pažvelkime čia. Tai klausia tipo FILE *, mes iš tikrųjų paprastai jie patinka. Taigi tai klausia dėl argumento failo tipo * vadinamas srautas, kurį src. Gerai? Kokio dydžio ką daryti norime skaityti? Aš jums davė tai problemos aprašą. STUDENTŲ 24: Vienas baitas metu. JASON Hirschhorn: Vienas baitas. Kaip didelis yra baitas? Jo dydis yra baitais, tai kas aš galiu įdėti tiesiai ten? STUDENTŲ 25: Vienas. JASON Hirschhorn: Vienas. Teisė. Jo dydis yra vieneto baito, taip 1 yra 1 baitas. Kiek aš noriu perskaityti vienu metu. STUDENTŲ 26: Vienas? JASON Hirschhorn: Vienas dalykas. Noriu skaityti vieno dalyko dydžio 1, viena Užkandote vienu metu. Ir kur aš jį, kai aš perskaičiau jį? STUDENTŲ 27: Paskirtis? JASON Hirschhorn: Taigi aš negaliu įdėti tai tiesiai į paskirties vietą. STUDENTŲ 28: Jūs gonna įdėti tai į trečiąją rodyklė? STUDENTŲ 27: į paskirties vietą. JASON Hirschhorn: Gerai. Taip. STUDENTŲ 29: Galite paskelbti kažką veikti kaip laikinas saugojimas anksčiau. JASON Hirschhorn: Gerai. Duok man, kad. STUDENTŲ 29: Kitas failas žymeklis, gal? JASON Hirschhorn: Gerai. Taigi tai yra negaliojantis žvaigždė - tai tipo negaliojantis žvaigždė, todėl ji nėra turi būti failas rodyklę. O jei aš skaitau vieną baitą, kur būtų gera vieta saugoti vieną baitą? STUDENTŲ 29: masyvas? JASON Hirschhorn: masyvo. Gerai. Ir ką dar yra kažkas, kad yra tik dydis vienas baitas? STUDENTŲ 30: char *? STUDENTŲ 29: Taip. JASON Hirschhorn: char * nėra vienas baitas. STUDENTŲ 29: char. JASON Hirschhorn: char yra vienas baitas. Teisė? Taigi galime vadinti šią buferis yra bendrinis pavadinimas naudojamas šių dalykų saugoti kažkas laikinai. Taigi sukurti buferį. Teisė? Bet tai atsižvelgti tuštumą *. Tai gal tu teisus, kad ji turėtų būti dydžio 0 buferis. Taigi ji saugo vieną - teisus. Kadangi tai čia - char buferis yra simbolių, tačiau tai užtrunka tuštumą * - rodyklė. Taigi, aš tai galėtų padaryti ir dabar buferis yra žymeklis. Ką dar galėčiau padaryti? STUDENTŲ 31: Įdėkite žvaigždę kitą char. JASON Hirschhorn: galėčiau sukūrė jis char *. Gerai. Kas kitas dalykas, aš galėtų padaryti? Arba einam su šiuo vienu. Char * buferis, tai kas aš įdėti čia? STUDENTŲ 31: buferio. JASON Hirschhorn: buferio. Buferis yra rodyklė į char. Ir toje vietoje, mes dedame vienas baitas kažką mes skaityti. Taip. Avi. AVI: Tiesiog greitas klausimas. Norite malloc buferio? JASON Hirschhorn: kas gali atsakyti į šį klausimą? STUDENTŲ 32: Na, ji tikrai ne taškas nieko dabar, todėl - JASON Hirschhorn: Bet padaryti norime malloc jį? STUDENTŲ 32: Jei buvo tai padaryti, kad būdas, manau, taip, nes jums reikia kai vieta, kad ji rodo. JASON Hirschhorn: Ar mes turi malloc jį? STUDENTŲ 33: Jei jūs ketinate naudoti jį už kilpos. JASON Hirschhorn: Ar mes ketiname naudoti jį ne kilpos? STUDENTŲ 34: Taip. STUDENTŲ 35: palaukti. Ar norime paskelbti jį ir į anapus linijos? JASON Hirschhorn: Taigi, aš manau, kad mes turime kai pseudo while cikle, kad čia mes bando išsiaiškinti, kad mes ne Dotarłeś dar. Mums nereikia, kad malloc jį. Mes veikia pagrindinis, tai tik ketina turi būti naudojamas viduje šis kilpą. Ji nebūtinai turi egzistuoti už tai. Taigi, tai gali būti vietinis kintamasis. Turite rodyklę į vietos kintamąjį. STUDENTŲ 36: Bet tai ne nukreipta į ką nors. JASON Hirschhorn: Ne, tai ne inicializuoti nieko. Tačiau mes neketiname naudoti jį taip pat. Mes ketiname įdėti kažką tai pirmas kartas, mes ją naudojame. Taigi, kad atrodo gerai. Taigi mums nereikia malloc čia. Ir aš manau, kad viskas gerai, kaip yra. Gerai. Mes turime fread liniją. Darykime kitą liniją. Jei norime rašyti į failą, kas yra gera funkcija naudotis, kaip tai padaryti? STUDENTŲ 37: fwrite? STUDENTŲ 38: fprintf? JASON Hirschhorn: fprintf yra vienas. Kas dar viena? STUDENTŲ 39: fwrite. JASON Hirschhorn: fwrite. Ir mūsų tikslais, fwrite, kurį matėme čia yra turbūt geresnis pasirinkimas. Tai užtrunka keturis argumentus, taip pat. Nishant, galite duoti Man argumentai? Nishant: pirmasis vyksta būti tik buferis. JASON Hirschhorn: Gerai. Nishant: antroji s tik bus 1. Trečias tai bus 1. Ir ketvirta bus dst. JASON Hirschhorn: Ar kas nors turi kokių nors klausimų apie tos linijos? Tai atrodo gerai. Gerai. Taigi, dabar atrodo, kad vienas dalykas, mes trūksta - iš tiesų, galime rašyti tai paskutinė eilutė. Uždaryti failus. Kas gali baigti mus raštu šios dvi paskutinės eilutės? Taip. Atsiprašome, koks tavo vardas? LUCY: Liusi. JASON Hirschhorn: Liusi. LUCY: fclose src ir tada fclose paskirties. JASON Hirschhorn: fclose, atviras skliaustas, src artimi skliaustas, kabliataškis. Ir fclose - taip? LUCY: Atidaryti skliaustelius, dst ir tada kabliataškiu. JASON Hirschhorn: Didysis. Ir ką aš turėčiau įtraukti pabaigoje? LUCY: Grįžti 0. JASON Hirschhorn: Grįžti 0. Ar aš turiu? Tiesiog klausimas. Ar mes turime įtraukti grąžą 0? KELI STUDENTAI: Ne JASON Hirschhorn: Ne Pagrindinis daro automatiškai jei jūs gaunate prie pabaigos. Bet manau, kad tai malonu įtraukti jį aiškiai. Ypač tada, kai mes grįžti kitą dalykų programos metu. Gerai. Tai, ką mes trūkstamus - KOL ką? Kas galite galvoti apie kai - turi tam tikrą prasmę, kas ką gali ten eiti? Net jei tai tik kai Pseudocode kaip kalba? Ką mes tikrai - kas mes norime eiti, kol? Taip, Liusi. LUCY: Bylos pabaigos. JASON Hirschhorn: Bylos pabaigos. Taigi, ką jūs laikote pabaigoje failą? LUCY: Kai pasieksite failo pabaiga, sustoti. JASON Hirschhorn: Gerai. Taigi, kai mes pasiekti failo pabaigą. Kaip mes žinome, kai mes pasiekėme failo pabaiga? STUDENTŲ 40: Manau, buferio bus nustatytas nulis. STUDENTŲ 41: buferio deklaruojama viduje linijos. JASON Hirschhorn: Taigi jūs manote, buferis bus nustatytas nulis. Kodėl buferio būti nustatytas nulis? STUDENTŲ 40: Nes kai jūs fread, bandote įdėti nieko į buferį. JASON Hirschhorn: Gerai. Taigi jūs dabar galvoju fread - kai mes pasiekė pabaigos failas, kas fread ketinate daryti? Manau, kad klausimas mes turime išsiaiškinti. Ką fread daryti? Ar įdėti NULL buferyje, arba tai daryti ką nors kita? Kaip mes galime išsiaiškinti, kas ji? STUDENTŲ 42: Vyras. JASON Hirschhorn: Vyras. Taigi pažvelkime čia. Grįžti vertę. Nuo sėkmės, fread ir fwrite grįžti Prekių skaičius skaityti ar rašytines kalbas. Šis skaičius prilygsta baitų skaičių perduodami tik, kai dydis yra 1. Jei įvyksta klaida, arba pabaiga failas yra pasiektas, grąžina vertė yra trumpas klausimas skaičius arba 0. Taigi mūsų tikslais, jei fread pasiekia failo pabaiga, ir skaito iš Bylos pabaigos, nėra nieko paliko skaityti, kas tai ketina grįžti? STUDENTŲ 43: nulis? JASON Hirschhorn: Kas? STUDENTŲ 43: nulis? JASON Hirschhorn: nulis. Ji ketina grįžti prie nulio. Taigi mes žinome, kad fread, kai mes pasiekė failo pabaigą, vyksta grįžti prie nulio. Kaip mes galime naudoti, kad savo pranašumą? AVI: Galite paskelbti kintamąjį už kilpos, vadinamą patikra. Jei patikrinimas Lygu - dabar - viena. JASON Hirschhorn: Gerai. AVI: Ir tada jūs galite įdėti IF pareiškimą iš karto po fread sakydamas, jei fread lygus nuliui - ne. JASON Hirschhorn: Kas gali padėti AVI iš kitų? AVI: Kas vertė grąžinti fread? JASON Hirschhorn: Mes tiesiog nuėjau, kad. AVI: Kaip jūs jai atstovauti? JASON Hirschhorn: Taigi jis grįžta - tegul ieškoti čia - ji grąžina size_t, kuri iš esmės yra sveikasis skaičius. Taigi ji grąžina sveikąjį skaičių. Ir mūsų atveju, tai bus grįžti 1 arba 0 - 1, jei jis perskaitė vieną dalyką - vienas baitas, ir 0, jei mes pasiekė pabaigos. Taigi, jei fread - taip? STUDENTŲ 45: Ar ne jūs tiesiog įdėti visą fread (buferis, 1, 1, src) į o kilpa? JASON Hirschhorn: Taigi jūs siūlote daro į ten tai? [Tarpines BALSAI] JASON Hirschhorn: Palauk. Taigi mes atsikratyti, kad. Taigi jūs siūlo pradėti į ten fread? Ką turėtume taip pat perkelti Jei norite padaryti, kad? STUDENTŲ 45: buferio ribų. JASON Hirschhorn: turėtume taip pat perkelti jį iš čia. STUDENTŲ 45: Bet tai daro nuolat perkelti jį į priekį? [Tarpines BALSAI] JASON Hirschhorn: Gerai. Taigi tai, ką pasiūlė Okshar. Mes sukursime savo buferio. Mes KOL fread, tada mes fwrite. Mintys apie tai? STUDENTŲ 46: Mano vienintelis klausimas yra, būtų ji iš tikrųjų vykdyti komandų fread? JASON Hirschhorn: Didysis klausimas. Kai jūs išleisti skambinimo funkcijos viduje sąlyga, ar tai skambinimo funkcijos vykdyti? Mes matėme pavyzdžių anksčiau. Teisė? STUDENTŲ 46: Gerai. Taip. Taigi ji vykdyti. JASON Hirschhorn: Mes matėme dalykų , kaip kad anksčiau, kur mes turime skambinimo funkcijos viduje būklės. Ar tai skambinimo funkcijos vykdyti? Taip. Taigi, atsakymas yra "taip". Ši funkcija skambutis bus įvykdyti. Bet vėl, tai ko mes norime? Kas yra vienas iš būdų mes galime išsiaiškinti , jei tai, ką mes norime? KELI STUDENTAI: Paleiskite jį? JASON Hirschhorn: Mes galime paleisti jį. Tačiau prieš tai, kad mes galime taip pat samprotauti per šį. Jei - sako, mes turime vieną baitą mūsų failą, mes susisieksime čia mes susisieksime su šiuo kodu. Tai bus paleisti. fread sugrįš vieną baitą ir laikyti jį į buferį. Ir tai įvertins, 1, Gerai, kai jis grįžta 1. Taigi, nors 1. Ar tai reiškia, kad kodą viduje KOL kilpa atliks? STUDENTŲ 47: Taip. Tai tiesa. JASON Hirschhorn: Taip. 1 tiesa. Tai ne 0. Taigi viduje čia kodas atliks. Taigi, mes rašyti, kad. Mes pereiti į šią linija dar kartą. Dabar mes turime - mes ne mūsų failo pabaigoje. Mes skaityti iš mūsų failo pabaigoje, nes mes turėjo tik vieną baitą į jį. Fread grąžina 0, parduotuvės kažkas buferio. Aš sąžiningai nežinau, ką ji saugo buferyje. Mes turbūt galėtų ieškoti pamatyti, ką ji daro. Kad Aš sąžiningai nežinau. Mes nežinome, kam rūpi, ką ji saugo buferyje? Bet tai vėl 0. Ir bus, o 0 įvykdyti? KOL 0 nesielgsiu. Taigi mes pereiti čia. Taigi galime gauti rankos pakėlimu, jei tai yra kodas turėtume paleisti, arba jei turėtų daryti pakeitimus pirmas. Taigi, jei jūs manote - jūs turite balsuoti. Jei manote, kad turėtume paleisti šį kodą kaip yra, prašome pakelti ranką. Gerai. Yra vienas - Ar turite klausimų, rūpesčių? Taip. STUDENTŲ 48: Po judame buferį už kilpos, mes turi malloc jį? JASON Hirschhorn: Didysis klausimas. Kai mes judėti buferio ribų kilpa, mes turime malloc jį? Tai sritis klausimas. Jei mes inicijuoti buferio ribų Šios linijos, ji egzistuoja viduje kilpa? KELI STUDENTAI: Taip. JASON Hirschhorn: Taip. Jo taikymo sritis apima viduje linijos, ir tikrai, kas toliau jį viduje Šio kodekso, įskaitant viskas viduje čia. Taigi, mes nereikia malloc jį. Tai vietinis kintamasis ir jo taikymo sritis dar yra kilpa. STUDENTŲ 49: Ar mums reikia išlaisvinti jį? JASON Hirschhorn: Ar mes reikia laisvos buferio? STUDENTŲ 49: Taip, jei mes ne malloc. JASON Hirschhorn: Ar mes reikia laisvos buferio? Mes ne. Vėlgi, tai yra vietos kintamąjį, todėl nereikia atlaisvinti jį. Gerai. Pažiūrėkime, kas atsitiks. Taigi tai yra niezainicjowanymi. Kad buvo ką kažkas, kad Marcus siūloma anksčiau. Taigi turime, kad klaidos, kintamo buferio yra niezainicjowanymi kai naudojamas čia. Kaip mes galime išspręsti šią problemą? STUDENTŲ 50: malloc jį? STUDENTŲ 51: Lygu NULL? STUDENTŲ 52: Pasakykite buferis Lygu NULL. JASON Hirschhorn: Gerai. Gerai atrodo. Mes turime jį dabar. Kurkime kažką bandyti kopijuoti. Taigi, mes turime tekstinį failą. Kaip mes galime paleisti šią programą? Taip. STUDENTŲ 53: Jūs galite padaryti tašką velniop CP test.txt. Ir tada jūs galite pavadinti kitą failą kurioje bus saugomi į. JASON Hirschhorn: Gerai. Mes jį vadiname out.txt. Kietas? Seg kaltės. Mintys apie seg kaltės? Tai puiku. Kaip mes galime išsiaiškinti, kur seg kaltė? Ką? STUDENTŲ 54: Gdb. JASON Hirschhorn: Gdb. Mes paleisti gdb rašyti gdb dot velniop, Mūsų programos pavadinimas. Nėra komandinės eilutės argumentai ten. Mes ketiname nustatyti ribinė vertė ne pagrindinis. Jei aš noriu pradėti gdb, ką man daryti? STUDENTŲ 55 R. JASON Hirschhorn R. Ir kas tada? STUDENTŲ 55: Argumentai? JASON Hirschhorn: Tada komandinės eilutės argumentai. Leiskite pasivaikščioti. N tik atsižvelgiant man pagal kiekvieną eilutę. Aš ruošiuosi eiti iki Aš gausiu SEG kaltės. Yra mano seg kaltės. Atrodo fread sukelia mano seg kaltės. Žinau fread sukėlė mano seg kaltės, , nes tai buvo linija mes tiesiog įvykdytas. Ir vienintelis dalykas, kuris buvo vyksta toje eilutėje - du dalykai buvo vyksta. Fread vyksta, tada mes buvome daro kai tikrinant. Aš pasiruošęs lažintis, kad KOL tikrinti nebuvo sukelia mano SEG kaltės. Labiausiai tikėtina, kad fread buvo todėl mano seg kaltės. Aš taip pat matau kažką čia, memcopy. Atminties kopiją. Panašiai skambanti juda atmintį nuo vienos vietos į kitą. Skamba kaip kažkas, kad įvyktų į fread, gal kai atminties juda iš čia į čia. Eikime per tai vėl. Kaip man pradėti, kad per ir paleisti jį dar kartą? Taip. STUDENTŲ 56: Ar jums reikia įdėti prieš buferio ampersand? JASON Hirschhorn: Taigi Ženklas prieš buferis būtų man duoti adresą buferis, kuris yra char *. Leiskite paleisti per šią daugiau vienu metu. Kaip paleisti per jį dar kartą? STUDENTŲ 57: Ar jūs tiesiog įveskite paleisti iš naujo? JASON Hirschhorn: Tiesiog įveskite paleisti vėl. Taigi mes neketiname vykdyti šią eilutę. Taigi buferis yra NULL rodyklė. Ištaisyti? Ji nukreipta į - pažiūrėkime. Jei mes turime - atkreipti greitai vaizdą apie tai. Ar visi gali pamatyti, jei Aš rašau čia? Taigi, kamino, turime vietos kintamasis ir ji vadinama buferio ir tai rodyklė į char. Ką adresas tai char ne? STUDENTŲ 58: 0x0. JASON Hirschhorn: Teisė. Štai kas tai yra. Čia, viduje buferio, yra saugomi 0x0. Štai ką mes turime - sąrankos turime dabar. Taigi ši eilutė, fread, kelia kažką nuo šaltinis, kur? Į šį langelį arba rėmelio? Kuris langelis? Langelyje kairėje arba dešinėje langelį? Ši teisė dėžutė. Iš to išplaukia, rodyklė, ir įdėkite jį čia. Kai mes bandome ir paliesti atminties į vieta 0, ką mes gauname? Segmentavimo kaltės. Tai klaida, mes turime dabar. Taip. STUDENTŲ 59: Ar jūs neturite įdėti žvaigždučių buferio? Ar ne? Dėl fread? JASON Hirschhorn: Taigi fread mano žymeklį. Todėl ji eina buferyje. Ir tada jis bus de nuoroda ji kažkur viduje fread. Bet vėl, mes matėme, tai užima rodyklę. Mums nereikia perduoti jai žvaigždučių buferį. Kad būtų perduoti tai kokia čia. Ir tai tikriausiai mums klaidą nes mes de nuorodas jį. Teisė? Kai mes de nuoroda šią rodyklę, kai mes stengiamės pasiekti šią vietą, mes vis klaidą - mūsų segmentavimo kaltės. Taigi - Oi. Mes ketiname mesti iš gdb. Mūsų linija - mūsų problema - tai teisė čia šioje eilutėje. Ir tai problema, nes Šios linijos. Kaip mes galime sukurti langą, yra prieinama fread. Teisė? Mums reikia sukurti langelį, kad yra vienas baitas didelis, char dydis. Bet mums reikia, kad langas turi būti prieinama kai ši funkcija atlieka. Taigi, kur - taip. Any ideas? STUDENTŲ 60: Tiesiog nustatykite ją kaip bet Alfa. Tiesiog atlikite char buferis Lygu pobūdžio. Ir tada, kai jūs turite buferio ten - JASON Hirschhorn: palaukti. Char buferio? Taigi ne žvaigždė? STUDENTŲ 60: Taip. Išimkite žvaigždė. Lygu atsitiktinį pobūdį. JASON Hirschhorn: Gerai. Taigi, duok man vieną. STUDENTŲ 60: Kaip ar kažką. Ir tada, kai jūs turite buferį ten, jūs naudojate - STUDENTŲ 61: Star? O ne, ampersand. STUDENTŲ 60: Naudokite ampersendas. JASON Hirschhorn: Gerai. O ką, apie fwrite? STUDENTŲ 60: Naudokite ampersendas dar kartą. JASON Hirschhorn: Gerai. Taigi, jūsų idėja yra, mes sukurti char ir įdėti kažką į jį, ir tada rašyti tą char. STUDENTŲ 60: Taip. JASON Hirschhorn: Kas žmonės galvoja? STUDENTŲ 62: Tai spiralinius. JASON Hirschhorn: Gerai. Tegul jį semia. Taigi, šį kartą, aš ruošiuosi padaryti tai raudona kamino čia, tada mes turės - ooh! Atsiprašau. Taigi, šį kartą mes turime kažką vadinama buferio, ir tai ant kamino. Ištaisyti? Ir mes taupyti jį, iš pradžių. Tada mes turime skambinti į fread. Kas fread yra ji užima baitą iš mūsų failą ir įdėkite jį kažkur. Tai daro jį bet kokia dalykas manimi nukreipta į. Na, kol mes turėjo šį adresą - 0x0. Dabar ką adresas turime? STUDENTŲ 63: Koks adresas buferio. JASON Hirschhorn: Koks adresas buferio. Tai tikriausiai bus kažkas panašaus. Tikriausiai bus pradėti su b ir f, ir tada jau kiti šeši šešioliktainius skaitmenis. Nesvarbu. Kai adresą. Ir mes perduoti šį adresą in Ir mes ketiname įdėti mūsų vieną baitas dalykas šiuo adresu. Taigi, mes ketiname įdėti savo vieną baitas dalykas viduje čia. Ir tada mes ketiname rašyti iš kas nors viduje čia. Ar kas nors turi kokių nors klausimų, apie tai? Kas galvoja, šis kodas bus dirbti? Pakelkite rankas, jei jūs manote šis kodas veiks. Jūs turite imtis poziciją. O kas mano, kad tai kodas neveikia? Pakelkite ranką. Visi kiti turėtų būti didinti savo jėgas. Gerai. Mykolas, kur tu stovi? Michael: Aš negaliu nuspręsti. Rūšies viduryje. JASON Hirschhorn: Jūs esate viduryje. Pasirinkti vieną. Michael: Aš turiu tikėjimą ir pasakyti, kad tai veiks. JASON Hirschhorn: Gerai. Jūs turėsite tikėjimą ir pasakyti, kad tai veikia? Kas atsitiko? [Tarpines BALSAI] JASON Hirschhorn: Nėra seg kaltės. Kaip mes galime patikrinti, ar du dalykai yra lygūs? Du failai yra vienodi. STUDENTŲ 64: Diff. JASON Hirschhorn: Diff. Diff patikros skirtumai, du failus, ir jei ji grąžina nieko, jie identiški. Ir jei mes atverti, mes gauti mūsų failą. Taigi, tai buvo teisingas sprendimas. Pažvelkime atgal į jį dar kartą. Mes iš tikrųjų net nebuvo reikia inicijuoti jį. Tai tikriausiai atrodo šiek tiek švaresnis, jei tu negali įdėti kažkas atsitiktinai ten. Taškas yra, jums reikia sukurti kai vietos laikyti ką nors iš fread ir imtis ko nors iš fwrite. Ir tai, ką turėjo būti arba vietos kintamasis kamino - jūs turbut malloc'd šiek tiek erdvės. Taigi mes iš tikrųjų gali turėti parašyta malloc čia, ir kad būtų dirbę. Ir tada mes buvo saugoti mūsų viskas kažkur krūvą. Bet iš tikrųjų tai yra, tikriausiai, labiausiai elegantiškas sprendimas. Tiesiog sukurkite tam tikrą kamino tarpą šie dalykai eiti. Aš turiu dvi kitas pastabas. Jei buvo imtis ruožtu šiame ir tada gauti įmetė į tai, mano komentarai būtų taip. Tai 1 tai čia man atrodo kaip magija numerius. Tai 1, kalbant apie fread, prasmę. Štai dalykų skaityti arba rašyti. Bet tai vienas čia turėtų tikriausiai bus kažkas. Taigi, kas yra viena išeitis? STUDENTŲ 65: dydis baitą. JASON Hirschhorn: Kaip tai? STUDENTŲ 65: dydis char. JASON Hirschhorn: dydis char. Taip, baitas yra ne tipo. Taigi dydis char darbus. Mes, gali turėti viršuje mūsų kodas, # apibrėžta, kad. Vadinamas kažkas BYTE ir tai tikrai char. Tiesą sakant, net geresnis galėjo tai - uint. Žinote, kas tai yra? Atsiprašau. Turiu jį atgal. Palaukite, Nr. Kokiu būdu ji eiti? Žinote, kas tai yra? Taip. STUDENTŲ 67: turėtų padėti suvienodinti tarp sistemų dalykų, kad turi - kaip ir nepasirašytos sveikieji kad turi 8 baitus? JASON Hirschhorn: Štai visiškai teisus. Dėl įvairių mašinų, iš char dydis - paprastai nėra char. Simbolių paprastai vienas baitas. Bet iš kitų duomenų tipų dydis yra įvairių dydžių ant 32 bitų mašina , palyginti su 64 bitų kompiuteryje. Uint8_t visada 8 bitai - visada vienas baitas. Ir man reikia būti, kad Standartinis int failo antraštės. Taigi dabar, tai tikriausiai buvo Geriausias būdas, kad parašyti šį kodą. Taigi man atsikratyti magija numerius. Ir aš taip pat logiška Tipo buferio. Tai ne tik simbolis, tai yra baitas, o tai, ką mes tikimės, kad ji būtų. Ir čia, mes iš tikrųjų buvo šiek tiek daugiau patvarus. Mes neragina jį char, kuris - gal kas žino - gali būti skirtinga dydis skirtingose ​​mašinose. Mes iš tikrųjų pasakyti, tai yra būtent vienas baitas, visada, nesvarbu koks. Ir jei mes žiūrime čia mes cp. Uh-oh. Kas atsitiko? STUDENTŲ 68: Jis gali būti įjungtas. JASON Hirschhorn: Kas? STUDENTŲ 69: Ar? STUDENTŲ 70: tu negali apibrėžti kaip tipo. STUDENTŲ 71: tačiau ji turėtų būti apibrėžta standarto. STUDENTŲ 72: Kas vyksta? STUDENTŲ 73: Ar apibrėžti būti visi dangteliai? JASON Hirschhorn: Taigi tai ne # define. Tiesą sakant, šiuo atveju, aš ketinate naudoti Typedef. Kadangi mes naudojame jį kaip tipo vienoje vietoje. Taigi šiuo atveju, mes iš tikrųjų nori Typedef kaip mes spausdinti naujo tipo baitas, ir tai iš esmės tai. Tai šiek tiek kitoks, nei # define. Ir dabar, mūsų kodas veikia puikiai. Taigi, dar kartą, # define trunka kažką, pakeičia jį visur su kitas dalykas. Tai tiesiog makro - Sutrumpintas atsikratyti magija numerius. Tačiau šiuo atveju, nes mes naudojant jį kaip tipo - čia - tam, kad į darbą, mums reikia į Typedef kokia baitas. Ir mes apibrėžiant jį čia. Tai ne struct, tai tikrai tik sveikasis skaičius be ženklo. Tai vienas baitas ilgai. Šis kodas bus prieinama internete, ir jūs visi turėtų jį dabar. Taigi, mes turime - tobulas - 13 minučių liko eiti per problema nustatyti 5. Noriu pasivaikščioti copy.c kartu, ir tada mes kalbėsime trumpai apie kitose Problemos nustatyti. Taigi leiskite man atsigriebti copy.c. Ir kietas dalykas yra, mes iš tikrųjų jau parašyta apie šio kodo daug. Kodas rašėme pažodžiui tik išėjo iš čia, kai buvau tai rašau on my own. Bet tai copy.c, sudaro pagrindą už pirmąsias dvi dalis problema nustatyti whodunit.c, kuris jums reikia parašyti, ir resize.c. Recover.c, kuris yra trečiasis ir paskutinis Dalis problemos rinkinį, nėra pagrįsta ne šio failo. Jūs ketinate reikia parašyti šį failą, mes suteikiame Jums už tai šabloną failą, bet tai neturi nieko daryti su copy.c. Bet kadangi copy.c yra už pagrindą pirmosios dvi dalys, mes ketiname vaikščioti per jį dabar, kad jūs turite geras jausmas, ką ji daro. Ir pastabas duoti kai jis toli. Mes jau parašyta keletas tai. Pirma, mes įsitikinkite, mes tris argumentus. Be to, mes prisiminti, failo pavadinimą. Taigi, mes praleisti šį žingsnį, kai mes koduojami mūsų dalykas - kai mūsų cp. Bet čia jie padaryti tai šiek tiek švaresnis. Jie teiravosi, ar abu failai yra gera, Be to, kad juos atidarant. Mes parašėme visą šį kodą tik dabar, todėl aš nesiruošia sustoti prie šio kodo. Kitas yra keletas dalykų, kad yra konkrečiai Failų tipai mes naudojame, kuris yra bitmap failus. Bitmap failus turėti tam tikrą metaduomenis su jais susiję. Taigi pirmoji pora baitų papasakoti apie failą. Jie nėra spalvų toje paveikslėlio pikselių. Jie papasakos apie failą. Ir jei jums perskaityti problemų rinkinį, jūs turėsite daug daugiau informacijos apie tai, kas tipų metaduomenų struktūras yra įtraukti rastriniai failai. Bet tai kodėl mes turime tai pirmasis rinkinys - šio kodekso čia. Mes skaityti metaduomenis - dviejų dalių metaduomenis - failų antraštės ir informacija antraštės. Ir mes patikrinti kai jį dalių įsitikinkite, kad ji yra teisinga Bitmap failą prieš tęsiant. Ir vėl, tai yra informacija, mes nereikia eiti į dabar. Jeigu jūs skaitote per problemos rinkinį, jums suprasti tai. Trumpai tariant, jie tiesiog pasakyti, tai yra rastras failą, patvirtinantis, kad. Be to, mes rašome tiems, į iš failo. Mes matome, kad čia. Mes raštu iš žymeklis. Be to, mes nustatyti paminkštinimas. Taigi dar kartą, kaip specifika su Bitmap failą, kai linijos yra apdaila pabaigoje. Ir jei jums perskaityti problemų rinkinį, Sužinosite daugiau apie paminkštinimas. Tai formulė rasti paminkštinimas. Svarbu prisiminti, - kai jūs pakeisite rastrinis dydį failą, išklojimui pakeitimus. Kai pakeisti dydį failą, išklojimui pakeitimus. Tai niekada nebus didesnis nei 3 - tai bus nuo 0 iki 3 imtinai. Bet kai jūs pakeisite dydį kažkas, išklojimui pokyčiai. Jei turiu tik vieną pikselį tos eilutės, aš reikia trijų baitų išklojimui, nes kiekvienoje eilutėje turi būti kartotiniai keturių ilgai baitų bitmap failas. Bet jei aš du kartus jį, eiti iš vieno pikselio iki dviejų taškų, kurių kiekvienas, tarkim, yra baitų, tada man reikia dviejų baitų išklojimui padaryti kad lygu keturiems. Taigi, kai aš pakeisti kažką dydį, Man reikia pakeisti sumą iš išklojimui turiu. Ar tai prasminga visiems? Be to, mes kartoti per kiekvieną iš eilės, ar per visas eilutes. Ir tada mes pakartoti per kiekvieno stulpelio kiekvienoje eilutėje. Mes gydant šią bitmap kaip tinklelis, kaip ir mes traktuojami iš 15 lenta. Kaip mes traktuojami plytas, kai mes atspausdinti juos ekrane. Eilučių ir stulpelių tinklelis. Tada - mes matėme tai. Mes iš tikrųjų tiesiog užkoduotas tai. Mes sukūrėme tikrą laikiną saugojimą. Mes skaityti ten, ir tada mes rašome jį. Tai yra būtent tai, ką mes ką tik padarė. Kitas, nes sakiau kiekviena eilutė baigiasi kai išklojimui, mes praleisti per tą išklojimui - senas apdaila. Ir tada mes vėl jį pridėkite. Tokiu atveju, mes sukurti lygiai tas pats failas. Mes tiesiog nukopijuokite jį. Taigi ši eilutė yra rūšies kvailas. Galėtume tiesiog tik įdėti išklojimui in Tačiau jei pakeisite failo dydį, jūs vis dar norite šią eilutę? Taigi, jei mes pakeisime failo dydis, mes vis dar norime praleisti ant senos išklojimui? STUDENTŲ 74: Taip. JASON Hirschhorn: Taigi mes darome. Nes Tai vėlgi pasiūlymai su šaltinio failu. Mes nerūpi išklojimui iš šaltinio failo. Mes norime eiti į kitą eilutę. Bet mes negalime tiesiog įdėti atgal senas suma paminkštinimas. Mums reikia įdėti atgal Nauja suma paminkštinimas. Taigi, kai mes keisti dydį failą, mes vis dar norime praleisti Apmušalas senas failas - kas mes skaityti iš. Tačiau tai, ką mes norime, mes ketiname kad reikia įdėti atgal kai skiriasi skaičius išklojimui, kad mes nustatyti. Taip. STUDENTŲ 75: šių dviejų tvarka linijos nesvarbu, tiesa? Kadangi jūs tvarkymas skirtingos bylos. JASON Hirschhorn: Būtent. Šių dviejų linijų tvarka nesvarbu. Mes rašome šią eilutę. Tai čia failo mes raštu. Tai labai svarbu, kad mes gauti teisinga suma paminkštinimas. Tai turi spręsti per failas. Mes norime iš karto pereiti per paminkštinimas. Mes nenorime skaityti - jei mes skaityti baitas metu, mes negalvoja apie tuos išplėtimo baitai. Mes norime, kad pereitumėte į kitą eilutę. Galiausiai, kaip Lucy davė mums, mes uždaryti failus ir grįžti 0. Taigi tai yra copy.c. Ir mes iš tikrųjų parašė - mes praleido didžiąją skyriuje rašau šį iš esmės. Jūs padarė tai. Taigi, tikiuosi, jūs turite gerą jausmą kas vyksta čia. Didelis skirtumas, sąžiningai, yra tik ši pirmoji dalis, kuri susijusi su ypatumai bitmap failus. Taigi turiu kaip mano kitą skaidrę, Ką mes turime daryti? Na, pagalvokime apie Detektīvromāns. Ir ką nors, kas perskaityti problema nustatyti, ką mes reikia padaryti Detektīvromāns? Tiesiog. Aleja. Aleja: Ar galite imti tą dalį, kiekvieno pikselio, kad žymi raudonai. Ir tada - natūra? JASON Hirschhorn: Gerai. Taigi, imti iš kiekvienos dalies, pikselių, kad žymi raudonai. Štai arti, bet ne visa tai. STUDENTŲ 76: Na, yra įvairių būdų, kaip tai padaryti. JASON Hirschhorn: Gerai. Duok man vieną pusę. STUDENTŲ 76: Išimkite visas raudonas, ir tada pabrėžti mėlyna ir žalia. JASON Hirschhorn: Gerai. Taigi, atsižvelgiant į abu šie būdai - tai skamba kaip mes suteikiame jai pikselių, ji turi raudoną, mėlyną ir žalią lygį. Mes norime pakeisti santykinius lygius raudona, mėlyna ir žalia, priklausomai tą pixel. Jeigu šiuo kodu mes turėtume pakeisti santykinis raudona, mėlyna ir žalia lygiai tam tikrą pikselių. Po mes jį skaityti - kol mes rašyti? Duok eilutės numerį. KELI STUDENTAI: 83. JASON Hirschhorn: 83. Taigi čia. Dėl Detektīvromāns, kodas, kurį reikia rašyti visi turėtų eiti tiesiai ten. Ir tai tik kodas jums reikia parašyti. , Nes, kaip mes girdėjome, viskas, ko jums reikia padaryti, tai pakeisti šias santykinį mėlyna, raudonos ir žalios lygiai iš kiekvieno taško. Jūs jį skaityti, ir dabar jūs esate ketinate rašyti jį. Kaip man - jei turiu šį dalyką vadinamas triviečiai, čia, ir tai iš įveskite RGBTRIPLE - gerai, jei mes pažvelgė į bmp.h, kas RGBTRIPLE? STUDENTŲ 77: Tai konstrukto. JASON Hirschhorn: RGBTRIPLE yra struct. Mes matome, kad teisė čia. Ir taip, jei aš norėjau pasiekti, tarkim, raudona lygis struct, kaip man pasiekti raudoną lygį šioje struct? [KLASĖ ūžia] STUDENTŲ 78: RGBTRIPLE.rgbtred? JASON Hirschhorn: Ar tai teisinga? STUDENTŲ 79: Jis turi būti trigubai taškas, o ne RGBTRIPLE tašku? JASON Hirschhorn: Trivietis. Trivietis yra vietos kintamąjį, todėl čia nėra jokių patarimų čia. Taigi mes tiesiog naudoti dot žymėjimą. Tai duos man raudonos lygį. Jei aš noriu jį pakeisti, aš tiesiog nustatyti ji lygi kažkuo kitu. Taigi dar kartą, šį kodo eilutę accesses Šis kintamasis viduje šis struct, ir mes galime nustatyti, kad jis ką nors naujo. Taigi Detektīvromāns, vėlgi, tai yra, iš esmės tai, ką mes turime daryti. Labai paprasta. Tiesiog pakeisti kai kuriuos santykinius lygius ir tai yra, kai šis kodeksas eina. Dydį, kita vertus, yra šiek tiek sudėtingesnis. Tiesą sakant, dydį turbūt Sudėtingiausia dalis šią problemą nustatyti. Mes turime tris minutes eiti per jį. Bet vėl, mes jau parašyta dauguma šio kodekso, todėl mes turėtų būti gana pažįstamas. Kokie yra keletas dalykų, kuriuos mes norime daryti dydį, jei jūs skaityti daugiau problema nustatyti? Jei galite pateikti juos man, mes galime kalbėti apie juos. Kokie yra keletas dalykų, kuriuos norime padaryti? STUDENTŲ 80: Vertikaliai - todėl jūs turite horizontaliai keisti jo dydį, bet vertikaliai keisti jo dydį, taip pat? JASON Hirschhorn: Taigi, jei mes suteikiama taškų, ir mes norime keisti jį veiksnys iš dviejų, tai dabar turi būti keičiamas horizontaliai ir keičiamas vertikaliai. Ar tai prasminga? Taip. Taigi, tai tikriausiai Didžiausias iššūkis. Ir mes kalbame apie tai per sec. Taip. STUDENTŲ 81: kaip aš maniau, kad jis buvo jums reikia atsispausdinti - JASON Hirschhorn: palaukti. Negalima pasakyti mums, ką padarė. Mes ketiname kalbėti logika. STUDENTŲ 81: Gerai. Koks buvo klausimas? JASON Hirschhorn: Jūs tiesiog pakėlėte ranką. Nebuvo jokių abejonių. Leiskite man pristatyti jį. Leiskite aptarti šį trumpai. Taigi, mes turime vieną tašką, mes norime atkartoti, tiek horizontaliai, tiek vertikaliai. Taigi geriausia, ką mes čia darome, mes skaityti mūsų pikselių, mes rašyti Tačiau daug kartų. Bet tada mes turime apgauti čia, nes tada mes norime pereiti prie kitą eilutę ir rašyti tai ne pradžioje į kitą eilutę. Taigi, jei mes norime pakartoti ir horizontaliai ir vertikaliai, kas yra vienas geras būdas tai padaryti - viena gera, nors tai padaryti? Taigi mums nereikia nuolat ieškoti aplink mūsų failą įdėti dalykų. Šis klausimas gali neturėti prasmės, bet manau, atsakyti jai padės. STUDENTŲ 82: Sukurti masyvą? JASON Hirschhorn: Taigi pagalvokime Kiekvieno failo kaip eilės. Pagalvokime pagal eilučių. Jei mes turime pirmą eilutę iš mūsų maža nuotrauką, mes galime padaryti, kad eilutė į didelės eilės nuo didelio paveikslėlyje, ir tada pakartoti tą eilutę tačiau daug kartų jis turi būti pakartotas, o ne eiti pikselis pixel, kuri pasireiškia painu, kai susijusius su failais. Nes jei mes turėjome - Bėgu iš vietos. Jei tai yra mūsų byla, ir mes turime, kad vieną tašką ten, ir mes norime jį teisę ten, mes vis dar turime kai kurių dalykų kad reikia eiti ten, kai mes rašyti ir kurti mūsų naują failą - mūsų failas tai dvigubai didesnis. Bet tai tikrai sunku su failų funkcijų praleisti aplink naujų linijų pavyzdžiui, kad ir tada grįžti čia ir įdėti dalykų ten. Tai beveik neįmanoma ką nors padaryti kaip kad, jei tai turi prasmę. Taigi, jei mes manome, kad, atsižvelgiant į eilučių, galime imtis savo eilutę ir tada padėkite jį - pakartoti eilutes vertikaliai. Ir tai, kaip mes sprendžiame dydį vertikaliai, o ne horizontaliai. Tai buvo natūra greitai ir šiek tiek klaidina. Deja, mūsų laikas. Aš stovėsiu ne tiems iš jūsų, čia kas turite klausimų apie problema rinkinys, įskaitant atsigauti. Taigi galime atidėti dabar. Ir vėl, jei turite kokių nors klausimų, mes galime kalbėtis už jos ribų.