JASON Hirschhorn: Welcome, kulħadd, sa Ġimgħa 6. Ninsab kuntenta li tara inti kollha ħaj u tajjeb wara Quiz 0, għaliex naf li kien daqsxejn mhux maħduma. Iżda Thankfully, inti kollha għamlet oerhört ukoll. U hekk dan huwa wunderbare. Jekk int fis-sezzjoni tiegħi, stajt mogħtija aktar inti back kwizzijiet tiegħek diġà. Koppja ta 'you, jien laqgħa wara klassi. U jekk int student estensjoni u ma rċevejtx kwizz tiegħek lura għadhom, TF tiegħek huwa probabbilment jaħdmu fuqu u gradazzjoni, u se tiksbu lura lilek dalwaqt. Allura studenti estensjoni tiegħi li huma jaraw dritt issa - nisperaw jgħixu - I se tikseb kwizzijiet tiegħek ftit ukoll. Aġenda tagħna għal-lum hija kif ġej. L-ewwel, aħna qed tmur biex jmorru fuq xi riżorsi li CS50 jipprovdi lilek. Aħna qed tmur biex jmorru fuq Quiz 0 jmiss, u I ser tirrispondi xi mistoqsijiet ħadd għandha madwar problemi partikolari. U mbagħad, aħna se jkunu għaddejjin fuq file I / O u l-problema stabbiliti 5. Dawk aħħar żewġ suġġetti se jieħu l-massa tat-taqsima illum. Nressaq din il-lista up kull ġimgħa bħala tfakkira lilek kollha, iżda tal-qalba taqsima, aħna biss 90 minuta - aħna mhumiex kapaċi tkopri dak kollu li I imħabba li tkopri għalik guys. Iżda aħna ma jkollhom ton ta 'riżorsi għall- inti timxi fuq kif inti isiru jafu il-materjal u x-xogħol permezz ta ' problema tiegħek settijiet. A tfakkira li għandi online test kaxxa, imwaqqaf għalik biex jimlew jekk inti xi feedback għalija, kemm pożittivi u kemm kostruttiv, dwar it-taqsima. Dan URL tinsab dritt isfel hawn. Allura jekk jogħġbok, tieħu mument jekk għandek xi feedback, jekk waqt it-taqsima, jew wara, jew wara li inti tara l-video online, li tagħti me feedback tiegħek. I verament japprezzaw kwalunkwe u kollha ta 'dan. Allura stajt ġiet wara konverżazzjonijiet żgħar bil-lott ta tiegħi l-istudenti matul il-ġimgħa - kif I idejn kwizzijiet lura, jitkellem dwar il- kors, jaraw kif qed tagħmel. U tema waħda għandha toħroġ fuq u aktar fil jitkellem dwar - fil partikolari - problema settijiet. U jien inkapsulati dik it-tema fuq il-bord dritt issa. Essenzjalment, hemm differenza bejn tidwir fil xi ħaġa li hija isir b'mod korrett u xi ħaġa li qed isir sew. Ħafna nies kienu jagħmlu meraviljuż f'termini ta 'korrettezza - 5 jew 4 dwar psets kollha. Ħafna nies qed jersqu dawk l-ħin kollu. Madankollu, sempliċiment għaliex inti ghamilt xi ħaġa tajba ma jfissirx li inti ħadthom isir xi ħaġa elegantly, jew effiċjenti, jew bħala nadif kif inti seta 'jsir. U dan huwa dak id-disinn - u għal grad, stil inqas - assi huma għall. So I am imbuttar inti kollha, u TFS oħra huma imbuttar inti guys, biex mhux biss dawran fl-affarijiet li huma korretti, iżda dawran fl-affarijiet li huma kodifikati tajjeb. Ma tagħmel bla bżonn għall-loops, ma terġa 'tikkalkula varjabbli jekk inti ma għandekx. Per eżempju, tħares lura għall-problema stabbiliti 4, meta jqiegħdu l-briks fuq il- screen, kull ringiela - kull briks fil- ringiela mogħtija għandha l-istess y-jikkoordinaw - l-istess għoli jikkoordinaw. Allura li y-jikkoordinaw ma kellhomx bżonn jkun ikkalkulat ġewwa l-interjuri nested GĦALL loop li inti probabbli li tintuża biex tqiegħed dawn briks fuq l-iskrin. Hija biss għandha tiġi kkalkolata kull darba li inti switched ringiela, jew mċaqalqa isfel filliera. Allura ngħid jekk hemm 10 bricks fil- ringiela, kull briks jista 'jkollhom l-istess y-jikkoordina, u li y jikkoordinaw tista 'biss tiġi kkalkulata darba għal dawk kollha. Dan ma jeħtieġx li jiġu kkalkulati 10 drabi, lanqas ma dik il-ħtieġa ta 'kalkolu li jiġri fil-attwali funzjoni tas-sejħa - l-sejħa l-ġdida funzjoni gracked. Allura jekk dan kien ftit konfuża għall- int, aktar ġeneriku, l-affarijiet li m'għandhomx bżonn li jiġri kull darba waħda inti tmur permezz loop GĦALL m'għandhiex tkun titqiegħed ġewwa s loop GĦALL, u m'għandhiex jiġri kull darba li inti tmur permezz tal-linja GĦALL. Eżempju ieħor disinn tajjeb rajna fil-Ġimgħa 3 għall-15, inti tista 'żżomm track tal-żero. Allura meta inti initialize-bord, inti tiffranka - fil-varjabbli globali, forsi - il-x u y-jikkoordinaw tal-żero. U mbagħad kull meta inti - fil-funzjoni pass tiegħek, kull meta inti tagħmel mossa suċċess, inti taġġorna l- post tal-żero. Dan jiffranka inti milli jkollhom jagħmlu nested għal-linji biex tfittex permezz tal- abbord kull darba fil-funzjoni pass tiegħek u jsibu l-żero, jew isibu l-madum, u mbagħad tiċċekkja x'hemm li jmiss lilu. Minflok, inti għandek l-post ta 'l- żero, inti tista 'biss ħarsa fuq, taħt, u lejn ix-xellug u tal-lemin ta 'dan, isibu il-maduma inti kienu qed ifittxu. Allura f'termini tal-programmi aħna qed miktub, dawn qed qatt kbir biżżejjed li xi wħud minn dawn id-deċiżjonijiet tad-disinn huma verament se jfixklu tiegħek programm, jew jagħmilha run aktar bil-mod, jew forsi saħansitra jispiċċaw tal-memorja. Iżda aħna qed għadhom imbuttar inti guys li tikteb bħala eleganti u kodiċi effiċjenti possibbli. Mela jekk inti tispiċċa bil-miktub affarijiet li jkollhom akbar b'mod sinifikanti ambitu, dawn se jkunu miktuba bil tajba disinn minbarra li jkunu korretti. Allura numru ta 'għandek miġjuba dik out. Dik xi ħaġa li aħna qed tfittex - xi ħaġa li aħna qed tmur biex tkompli push inti guys fuq. Jekk qatt ikollok xi mistoqsijiet dwar l- disinn tal-programm tiegħek, tħossok liberu biex jilħqu lili, u jien kuntent li walk permezz tal-programm tiegħek miegħek, u l-punt barra xi wħud mill-disinn deċiżjonijiet li inti magħmula, u jagħtuk xi suġġerimenti dwar kif jagħmlu anki disinn deċiżjonijiet aħjar. Allura aħna qed tmur biex jimxu fuq biex jitkellem dwar Quiz 0. Qabel nagħmlu dan, ma xi ħadd xi mistoqsijiet dwar dak li Stajt koperti s'issa? [ISTORBJU rustling] JASON Hirschhorn: Seba sekondi. OK. Ejja nitkellmu dwar Quiz 0 għal bit. Ħafna minnkom Quiz tiegħek 0 dahar. Jekk inti ma, nisperaw tiftakar hija daqsxejn. Imma jekk inti ħadt Quiz 0, allura inti wkoll ikollu aċċess għat-PDF online l-soluzzjonijiet tal-kampjun. Ħadd ma jkollu xi mistoqsijiet qabel aħna jaqbżu fil-materjal tal-ġimgħa dwar problema partikolari fuq Quiz 0 - għaliex it-tweġiba hija għalxiex? Huwa xi ħadd konfuż dwar xi ħaġa? Anke jekk inti sibt il-problema dritt, imma biss tixtieq lili biex jispjegaw daqsxejn aktar, jien kuntent li jagħmlu dan issa. So I talbu inti guys biex jiġu ppreparati ma 'xi ħsibijiet dwar Quiz 0. Hekk li tixtieq tikseb us beda bil mistoqsija jew jikkummentaw dwar Quiz 0? [Rustling PAPER] JASON Hirschhorn: Mhux kulħadd għamlet perfettament. So I know [laughs] hemm bżonn li jkun hemm xi mistoqsijiet dwar Quiz 0. OK. Iva. Ompica. OMPICA: Numru 10. JASON Hirschhorn: Numru 10. Liema wieħed kien numru 10? OMPICA: Il - JASON Hirschhorn: I haven't - OMPICA: Il jinkludu - JASON Hirschhorn: Numru 10 kienet tmien biex i - miktub tmienja biex i? OMPICA: Yeah. JASON Hirschhorn: OK. Allura mistoqsija oħra jista 'jkollok kien staqsa am I prescient? It-tweġiba hija iva. Fit-taqsima qabel l-kwizz, I talab inti guys għall-kodiċi kemm Sterling u tmienja għal i. Kemm minnhom ġara jidhru fuq il-kwizz. Hekk nisperaw, int titħallas attenzjoni għal dan. U jekk kellek, allura inti jkollok probabbilment isir ukoll fuq dawk iż-żewġ. Imma tmienja li i, aħna ma attwalment kodiċi fil-klassi, iżda kienet, għal darb'oħra, talab fuq il-kwizz. Allura koppja ta 'affarijiet li tieħu jinnota waqt il-kodifika tmienja għal i. L-ewwel ħaġa, kull l-kwistjoni, kienet li għandek bżonn biex jiċċekkjaw jekk l-sekwenza kien ugwali għal null. A nies koppja ppruvaw biex jiċċekkjaw aktar tard fil-programm jekk i bracket kien i - hekk karattru speċifiku li string - kien ugwali għal null. Imma ftakar, li null huwa essenzjalment - huwa tajjeb li wieħed jaħseb ta ' null bħala pointer zero - pointer għal żero - someplace fil-memorja fejn int qatt ma tista 'aċċess. Mela jekk xi ħaġa hija ugwali għal null, inti taf li ma ġiex initialized, jew hemm xejn hemmhekk. Allura s hija stilla char, s i bracket huwa char. Għalhekk jagħmel sens li tqabbel i li null, iżda mhux i bracket i li null. Iżda għal darb'oħra - għalhekk ma kienx l-ewwel ħaġa li inti kienu suppost tagħmel - jivverifika sabiex ikun żgur li inti fil-fatt ltqajna string reali. Sussegwentement, inti riedu li jmorru permezz kull karattru fis-sekwenza. U hekk li tkun bħal parentesi s i, per eżempju, jekk i huwa iterator tiegħek. U jieħdu dan il-karattru, u jiksbu valur attwali tiegħu. Ikollok maħżuna bħala char, iżda il-valur ASCII għal żero - żero bħala karattru - ma tkunx attwalment n-numru sħiħ żero. Huwa xi numru ieħor li inti tista ' tfittex up fit-tabella ASCII. Allura mod wieħed biex jikkoreġu għal dan - probabbilment l-aħjar mod biex tikkoreġi għall- li - huwa naqqas minnha il-valur karattru - żero bħala karattru. Kwotazzjoni waħda Allura minus, żero, kwotazzjoni wieħed ieħor. Li se jieħdu kwalunkwe numru għandek bħala char, u ġġibu ugwali għal in-numru bħala numru sħiħ attwali. U li hija simili ħafna għall-metodu ħafna nies ħadu fil- problema sett 2, bl Caesar u Viginere - dawk ciphers, meta inti kienu jduru magħhom. Allura wara ikollok bħala numru minn żero għal disgħa, allura - jiddependi fuq fejn din tmur fin-numru aħħari - għandek bżonn biex immoltiplika lilha minn qawwa ta '10. Xi nies mċaqalqa mid-dahar għall- quddiem, u moltiplikata l-individwu Numru minn setgħa ta '10. Xi nies mċaqalqa minn l quddiem għal wara - u għalhekk ħa l-ogħla numri tordna ewwel - u jiffranka dawk fil- varjabbli counter globali. U mbagħad kull darba permezz tal GĦALL loop, timmultiplika din ġgant globali kontro varjabbli minn 10, biex jagħmlu ispazju għall-char jmiss. Allura li kien ftit konfuża mingħajr me miktub fuq il-bord. Iżda l-soluzzjoni tal-kampjun huwa disponibbli lilek. Iżda dawk kienu l-affarijiet kbar aħna kienu qed ifittxu. Wkoll kontroll biex tiżgura li kull karattru individwali kienet tabilħaqq karattru bejn żero u disa ', u mhux xi karattru ieħor, bħal A, per eżempju. Dawk kienu l-affarijiet konna qed ifittxu f'dak kwistjoni. Does li iwieġeb il-mistoqsija tiegħek? OMPICA: Yeah. JASON Hirschhorn: OK. Hemm xi mistoqsijiet oħra dwar Quiz 0? What about kompilazzjoni? Kulħadd kompilazzjoni dritt? Nru. Kien hemm - [Laughs] Xi mistoqsijiet dwar l- proċess kumpilazzjoni? Ara naqra. [Rustling PAPER] JASON Hirschhorn: Iva. Michael. MICHAEL: Huwa numru 7 - każwali? JASON Hirschhorn: Numru 7. Numru 7 kienet tikseb numru sħiħ każwali. Eċċellenti. Allura int tingħata integer a u integer b, u inti tixtieq każwali numru sħiħ bejn u b. Nistgħu attwalment tikteb dan wieħed fuq il-bord, għaliex dan wieħed kienet linja waħda tal-kodiċi - mod wieħed biex tagħmel dan. Allura aħna qed jingħata drand bħala funzjoni nistgħu jużaw. U dak ma drand - jekk wieħed jassumi huwa kien miżruha - dak ma drand ritorn? MICHAEL: A float bejn 0.0 u 1.0. JASON Hirschhorn: A numru - yeah. A numru bejn 0 u 1. U hekk għandna b u a. U allura għandna numru bl-addoċċ tagħna bejn 0 u 1 mogħtija lilna mill drand. Xi nies ppruvaw li jpoġġi b, jew b minus a, jew xi ħaġa ġewwa dawk parentesi. Dan ikun ifisser li dawn qed argumenti għal din il-funzjoni. drand ma tieħu ebda argument - bħal getString ma ma tieħu ebda argument. Allura huwa biss paren miftuħa, qrib paren - u li, hija stess, hija is-sejħa funzjoni. U li jagħtik numru bejn 0 u 1. Of course, għandna firxa sħiħa li n-numri tista 'tkun pulzieri Jiġifieri, jekk b huwa 10 u huwa 5, aħna verament jridu numru ma 'firxa ta' 5. Allura l-ħaġa li jmiss li għandna bżonn tagħmel hu li immoltiplika dan mill-firxa b minus a. Allura jekk wieħed jassumi li s immultiplikat. U li ser tagħtina numru f'firxa mogħtija. U li firxa speċifika hija l- differenza bejn b minus a. U fl-aħħarnett, li ser jagħtu biss mill - jiġifieri l-firxa bejn b nieqes huwa 5, li ser tagħtina numru 0-5. Iżda jekk fil-fatt 5, għandna bżonn li tingħata spinta din il-firxa sa fejn huwa attwalment mistennija li jkunu, billi żżid. Allura li gets-dritt loġika. U allura, kieku inti għandek mistoqsija oħra? MICHAEL: Le I biss jħossu verament mutu dritt issa. [Laughs] JASON Hirschhorn: Le M'għandekx tħoss verament dumb. Numru ta 'nies tħabtu din il-kwistjoni. U mbagħad, il-kwistjoni oħra hija, drand, inti qal, jagħtik float - jirritorna float. Iżda din il-funzjoni fil-fatt talab għal integer jiġu rritornati. Inti ma għandekx bżonn li jitfa dan b'mod espliċitu għal numru sħiħ, minħabba li dawn operazzjonijiet se titratta dan bħala kollha ta ' float - bħala numru b'punt li jvarja. Bħal dan se - anki jekk dan huwa integer, dan se jiġi mmultiplikat korrett. L-multiplikazzjoni se taħdem. Inti ma għandekx bżonn li jitfa hawnhekk. Fil-fatt, inti m'għandekx mitfugħa. Li kieku - jekk inti mitfugħa numru dan huwa bejn 0 u 1 - numru bl-addoċċ, punt floating - allura la se jkun biss 0 jew 1, hekk inti ser titlef kollha ta 'dak preċiżjoni. Iżda fl-aħħar, meta inti tirritorna, awtomatikament jiġrilha jintbagħtu lura bħala numru sħiħ. Allura inti m'għandekx bżonn tagħmel li ikkastjar yourself. Allura dan kien it-tweġiba għal din id-domanda, numru 7. Kwalunkwe mistoqsijiet oħra fuq Quiz 0? Yeah, Annie. ANNIE: Meta do nużaw rikursivi - meta ma nużaw loops iterattiv? JASON Hirschhorn: Meta tuza rikursivi - hekk b'mod aktar ġenerali, il- vantaġġi u liżvantaġġi ta recursion versus approċċ iterattiv. Jista 'xi ħadd joffru pro jew con? Jekk jogħġbok? Mhux Jista 'xi ħadd. Li jistgħu joffru pro jew con? [Rustling PAPER] STUDENT 1: rikursivi huwa inqas kodifikazzjoni - inqas ittajpjar? JASON Hirschhorn: Allura ġenerali, recursion speċjalment, funzjoni - jew algoritmu simili jingħaqdu sort - li huwa adatt għal approċċ rikursivi - jista 'jkun aktar sempliċi għall-kodiċi recursively. U biss tagħmel aktar sens biex tagħmel dan recursively. Allura li tkun pro biex recursion. Oħrajn? Yeah? STUDENT 2: Con għall recursion - Hija tuża memorja aktar. JASON Hirschhorn: Allura eżattament id-dritt. A funzjoni jirrikorri ser ikompli jżid munzell frames għall-munzell. Mela jekk inti qed joperaw fuq lott ta ' numri, u għandek sejħa dan jiffunzjonaw ħafna, allura inti se ċertament jieħdu memorja aktar, filwaqt li approċċ iterattiv se jqiegħdu wieħed biss munzell qafas fuq il-munzell, minħabba dan kollu jiġri fi ħdan funzjoni waħda. Kwalunkwe vantaġġi u liżvantaġġi oħra? Yeah. STUDENT 3: Pros għall recursion. Inti ma għandekx biex tiddetermina quddiem kif ħafna drabi l- kodiċi kellhom jiġu ripetuti. Inti jista 'jkollhom numru predeterminat ta' żminijiet li inti għandek jtenni, imbagħad recursion huwa aħjar, għaliex hija tieħu dak ir-riżultat. JASON Hirschhorn: Naħseb li veru. Imma naħseb fiż-żewġ każijiet inti qatt - inti probabilment tikseb xi input mill-utent. Jew din il-funzjoni ikollu xi input li jiddeterminaw kif ħafna drabi huwa għandhom jiddekorru. Allura ġeneralment, inti ma tkunx kodiċi hard - anki f'approċċ iterattiv - kif bosta drabi li loop għandha titmexxa. Kellek ieħor inti kienu jaħsbu dwar, Annie? OK. Għalhekk dawn huma probabbilment l-żewġ - il-pro-akbar u l-akbar con għal rikursivi versus approċċ iterattiv. OK. Xi ħaġa oħra fuq Quiz 0? Ejja jimxu fuq. File I / O. Hemm qasir isbaħ din il-ġimgħa fuq il-fajl I / O li nisperaw għandek jaraw multipli darbiet, u ammirajt. Ħafna xogħol marru fis dan, u stajt sema huwa insanely utli. I wkoll inklużi l-link fuq din il-slide, fil-każ li ma kellhomx ċans sabiex isegwu din 10 darbiet. Allura, aħna se jmorru fil-qosor fuq il- passi kbar għall-ftuħ u tax-xogħol ma 'fajls, u mbagħad aħna ser adsa fis-problema kodifikazzjoni qabel jeżamina l-sett problema. Għalhekk għal darb'oħra, jien ser tpoġġi dan fuq l-iskrin, imma jien ser jitkellmu għal biss minuta dwar dak li aħna qed tagħmel hawn mal-fajl I/O-- xi jfisser? Dan ifisser li nistgħu noħolqu tagħna programmi, u mbagħad ikollhom programmi tagħna ħruġ, u ma għamlu ebda impatt fuq l-dinja ta 'barra tal-programm tagħna. Imma meta aħna tibda taħdem ma 'fajls - tnejn qari tagħhom fil-u l-ħolqien minnhom - aħna jista 'jkollha xi effett fuq l- dinja ta 'barra tal-programm tagħna. Eżatt bħal jekk Microsoft Word ma kienx kapaċi biex tagħmel xi Word dokumenti, imbagħad ladarba Microsoft Word nieqaf, kollha tiegħek xogħol tkun marret, u dan iwassal verament tkun inutli. We do finalment jridu jkunu kapaċi jiktbu programmi li jistgħu jaffettwaw l- dinja ta 'madwarhom, kemm billi tieħu fl inputs kumplessi - f'termini ta 'fajls u permezz fajls, u wkoll joħolqu interessanti u outputs konvinċenti - f'termini ta 'tipi differenti ta' fajls. Allura huwa għalhekk li aħna qed jibdew jitgħallmu kif jaħdmu ma 'fajls. B'mod aktar speċifiku, liema nagħmlu hija kif ġej. Huwa sempliċi ħafna. Hemm biss ftit passi, u huma elenkati hawn fuq dan il-kodiċi. Allura aħna qed tmur biex jgħaddu din il-linja kodiċi b'linja. L-ewwel, tara enfasizzat - meta int taħdem ma 'fajl, irrispettivament mit-tip tal-fajl huwa, għandek bżonn biex tiftħu. U li huwa ma sejħa għal fopen - dritt hawn. You jinkludu l-isem tal-fajl. Jekk il-fajl ma jkunx fl-direttorju tiegħek, jew il-folder fejn dan il-programm ħajja, imbagħad inti għandek bżonn ukoll li jinkludu triq ta 'fejn dan il-fajl huwa. Aħna qed tmur biex wieħed jassumi li dan fajl imsejħa "text.txt" - dokument test sempliċi - huwa fil- istess folder bħal dan il-programm hu. Allura dak ħaġa oħra li wieħed iżomm mind - li jekk inti tixtieq li tiftaħ fajl x'imkien ieħor, inti fil-fatt bżonn li tinkludi post tagħha. It-tieni, inti tista 'tgħaddi l-argument li fopen, u dan huwa dak li inti trid tagħmel mal-fajl. Hemm tliet argumenti prinċipali li int ser jgħaddu għal fopen. Min jista 'jagħti me dawk it-tliet? Min jista 'jagħti me wieħed minnhom? Iva. STUDENT 4: L-isem ta 'fajl? JASON Hirschhorn: Jiddispjacini. Tliet argumenti ewlenin inti tista 'tgħaddi bħala t-tieni argument li fopen. Int dritt - l-isem ta 'fajl hija l-ewwel argument. Iżda t-tieni argument li fopen huma ġeneralment tliet kordi, u - iva. Aleja. Aleja: A għall tehmeż. JASON Hirschhorn: A, jekk inti tixtieq li tehmeż għal fajl li diġà teżisti. STUDENT 5: R għall jinqara. JASON Hirschhorn: R, jekk inti trid tinqara minn fajl. STUDENT 6: W għal jiktbu. JASON Hirschhorn: U w, jekk inti jridu jiktbu għal fajl. Allura f'dan il-każ, aħna qed miktub għall-fajl, hekk aħna w. Inti tiftaħ dan, inti ukoll għandek biex isalva l- fajl x'imkien, u li bl- kodiċi għall-naħa tax-xellug tal- l-operatur assenjazzjoni - Jien ħolqien ta 'pointer għall-fajl imsejħa, f'dan il-każ, inkartament. Aħna mhux se joqogħdu jinkwetaw dak dan ħaġa FILE caps kollha hu. Biżżejjed ngħid, dan huwa twil nixxiegħa ta 'żerijiet u dawk. U li kif se nkunu qed toperahiex u jifhmuha. Il-ħaġa li rridu nagħmlu - u dan huwa oerhört importanti - kull meta inti tiftaħ fajl - fil-fatt, kull meta inti sejħa malloc, għall- eżempju, u nikseb xi memorja u jippruvaw u ħlief fil-pointer, inti dejjem tixtieq li jivverifika sabiex ikun żgur li din funzjoni ma reġgħux lura null. Allura f'dan il-każ, aħna verifika biex jagħmlu żgur li aħna attwalment fetaħ il- fajl korrett, u kien hemm ebda żball fil-programm tagħna. Sussegwentement, ladarba aħna ħadthom ċċekkjati sabiex jiġi żgurat li għandna fajl tax-xogħol, nistgħu jikteb lill, jew taqra minn, jew tehmeż għall-fajl. F'dan il-każ, I am sempliċiment istampar linja waħda għal dan il-fajl. Kif inkun naf li? Well, jien jużaw din il-funzjoni imsejħa fprintf. Kollha tal-funzjonijiet tkun se tuża meta tikteb li, jew qari minn, jew timmanipula fajls se jkunu simili għal funzjonijiet inti stajt tidher qabel, iżda tibda bl-ittra F, permanenti għall-fajl. U fprintf, b'differenza print normali tagħna app, jieħu argument addizzjonali, u li huwa l-fajl fejn inti tixtieq li jistampaw din il-linja għal. I ma jkollhom xejn id-dritt ta ohai. I ma jkollhomx it-tielet argument li printf - jew it-tieni argument li printf, il- tielet argument li fprintf, minħabba I m'għandhom l-ebda placeholders hawn. Jien ma jinkludux kwalunkwe varjabbli. Iżda għal darb'oħra, fprintf u dawn kollha fajl funzjonijiet li joperaw ma 'fajls huma ġeneralment ser jeħtieġu l-fajl li fuqhom qed joperaw. Fl-aħħarnett, l-aħħar ħaġa importanti li tagħmel huwa li jagħlaq il-fajl, bħad ma '- kull meta aħna malloc xi ħaġa, irridu li jillibera xi ħaġa, lest we jkollhom nixxija memorja - irridu li tagħlaq fajl tagħna. Jekk dan il-programm ħareġ mingħajr għeluq il-fajl, odds huma xejn imur ħażin, speċjalment jekk kien file żgħir. Iżda huwa ċertament stil kodifikazzjoni tajba u l-prattika li dejjem tagħlaq fajl tiegħek meta int lest tużah. Allura dan huwa l-baŜi tal-fajl I / O. You ħadthom probabbilment jidhru li qabel, jew jaraw li f'dak qasir meraviljuż. Ħadd ma jkollu xi mistoqsijiet, qabel immorru fis xi kodifikazzjoni prattika problemi, madwar file I / O jew il- passi I biss marru fuq? [Ittajpjar Ħsejjes] JASON Hirschhorn: Do you mistoqsija, Avi? AVI: Le JASON Hirschhorn: OK. Jien ser tistenna ieħor seba 'sekondi. [Laughs] Li ponta verament tajba. Inti guys biss ma simili tistaqsi mistoqsijiet. Li l-multa. OK. Allura problema tagħna prattika ewwel hija, aħna ser jidduplikaw l-funzjoni ta ' għodda kmand tal-linja li inti probabilment użati qabel - kopja - l-għodda kopja. Jekk għandek tip cp u mbagħad tgħaddiha tnejn argumenti fis terminal tiegħek, inti tista ' kopja fajl. U dan huwa dak li se nkunu qed jiktbu dritt issa. Għalhekk għal darb'oħra, qari off ta 'dan slide, I d inti tikteb programm li jieħu tnejn u kmand tal-linja tnejn biss argumenti - fajl sors u fajl destinazzjoni - u kopji l-kontenut tas-sors fajl għall-fajl destinazzjoni byte wieħed kull darba. Hekk li l-lott li titlob. Għal darb'oħra, approċċ tajjeb għal dan huwa li tmurx dritti għall-kodiċi C, iżda din tinqasam koppja ta 'passi. L-ewwel, jaħsbu dwar il-loġika - eżattament dak li jien inti titlob sabiex tagħmel - u jifhmu kollha ta 'l- passi biex din il-problema. Mhux C, biss f'xi pseudocode, jew saħansitra mudell mentali ta ' x'inhu għaddej. Sussegwentement, ladarba inti għandek l pseudocode isfel, figura kif l pseudocode mapep għal fuq għodod u affarijiet konna tgħallmu jużaw fil C. U fl-aħħarnett, ladarba inti għandek dak kollu li flimkien, inti tista kodiċi l-problema. Ħu 5 sa 10 minuti biex jaħdmu fuq din il-problema. I ser jitqiegħdu l-istruzzjonijiet back up fit-tieni. U allura aħna qed tmur biex jmorru fuq l pseudocode, u l-kodiċi it jgħixu bħala grupp. Jekk għandek xi mistoqsijiet waqt li int jaħdmu fuq dan, tħossok liberu li tqajjem naħa tiegħek, u jien se jidħlu madwar u tweġiba għalihom. STUDENT 7: Nista swipe biċċa karta? JASON Hirschhorn: X'hemm up? [Ittajpjar Ħsejjes] JASON Hirschhorn: OK. Ejja jmorru fuq il-pseudocode ewwel, u imbagħad I ser jagħtuk ftit aktar minuti biex jintemm kodifikazzjoni. Li jixtiequ jibdew me off l-ewwel linja ta ' pseudocode għal din il-funzjoni? STUDENT 8: Iċċekkja biex tiżgura li inti ngħataw żewġ fajls. JASON Hirschhorn: OK. U jekk aħna mhux qed? STUDENT 8: Nixtieq ritorn 0. JASON Hirschhorn: Jekk nerġgħu lura 0? STUDENT 8: Ritorn a - lilhom infushom. Jiddispjacini. JASON Hirschhorn: Yeah. Probabbilment le 0. Minħabba 0 ifisser kollox kien tajjeb. OK. Allura dak hu l-ewwel linja ta pseudocode. Min għandu l-tieni linja ta 'pseudocode? STUDENT 9: Open kemm il-fajls? JASON Hirschhorn: Iftaħ iż-żewġ fajls. OK? STUDENT 10: Iċċekkja biex tara jekk il-fajl huwa NULL? JASON Hirschhorn: Jivverifika sabiex ikun żgur la huma NULL. Bħala twarrib - mmejla 0 - hija li NULL? STUDENT 11: No JASON Hirschhorn: Li mhux NULL. Li huwa msejjaħ il-terminatur NULL. Huwa fil-fatt spelt ma l waħda biss. Allura iċċekkjar xi ħaġa kontra li - li attwalment karattru - hekk iċċekkjar xi ħaġa kontra li hija mhux l-istess bħala verifika biex tara jekk ugwali NULL. U xi nies - fuq kwizzijiet tagħhom u l-problema tagħhom settijiet - jkunu kisbu l- tnejn ta 'dawk konfuż. Imma tnejn minn dawn huma fil-fatt differenti. Wieħed jispiċċa string - wieħed huwa pointer għal 0. STUDENT 12: Għaliex ma inti tiċċekkja li kun żgur li l-fajls ma jkunux NULL qabel ma inti tiftaħ minnhom? JASON Hirschhorn: So open jiffranka xi ħaġa fil-fajl. U jekk inti tmur lura hawn - hekk din il-linja - fopen - se jagħtik l-indirizz u jaħżnu li l-indirizz fil-fajl jekk xogħlijiet. Jekk ma jaħdimx, dan se taħżen NULL - STUDENT 12: Oh. OK. Ltqajna inti. JASON Hirschhorn: Fil-fajl. Allura inti ma tistax tivverifika għall NULL qabel ma inti ħadthom jinfetħu minnhom. NULL ifisser xi ħaġa ma jaħdmu b'mod korrett. OK. Allura jivverifika sabiex ikun żgur la hu? Jew huma? What do naħsbu? Aħna ser imorru ma 'dak. STUDENT 13: Jinsab. JASON Hirschhorn: Huwa? La hu? STUDENT 13: Jinsab. JASON Hirschhorn: OK. Aħna jidhru li jkollhom xi kunsens dwar dan. La huwa NULL. OK, linja li jmiss ta pseudocode. Min ma tani linja għadhom? Aħna se tistenna għalik. Yeah. STUDENT 14: Int għandek taqra mill-ewwel file? JASON Hirschhorn: OK. STUDENT 14: Or nużaw fscanf jew xi ħaġa bħal dik l-ewwel fajl? JASON Hirschhorn: Allura rridu aqra mill-ewwel fajl u - ejja tpoġġi dan id-dritt hawn. Aqra mill-fajl sors. U mbagħad, dak li nagħmlu wara we jinqara mill-sors fajl? Xi ħadd ieħor? STUDENT 15: Ikteb in l-fajl destinazzjoni? JASON Hirschhorn: Niktbu sabiex l-fajl destinazzjoni, u - OK. X'iktar aħna neqsin? Xi ħadd ieħor li ma tani linja tal-kodiċi s'issa - ta pseudocode. Yeah. STUDENT 16: Forsi inti tista 'dejjem jivverifika jekk hemm xi ħaġa li taqra għal, bħall-linja li jmiss? Li huma simili l-linja li jmiss, ara jekk dan jeżisti. [Ħoss ELETTRONIKA] JASON Hirschhorn: Oops. C'est software journaling tiegħi. Yeah? STUDENT 16: Yeah. JASON Hirschhorn: So jagħtu lili waħda aktar ħin. STUDENT 16: Iċċekkja jekk hemm xorta linja li jmiss mill- sors fajl biex jinqara. JASON Hirschhorn: OK. Allura aħna mhux qed taqra linji - ġew qari bytes hawn - imma int korretta. Aħna rridu li jaqraw u jiktbu sakemm m'hemm l-ebda aktar bytes. OK. U hekk dawn għandhom verament tkun indentata daqsxejn, għaliex qed taħt hemmhekk. Dritt? Sakemm aħna qed barra ta 'bytes, aħna qed tmur biex jinqara mill-fajl sors u jiktbu għall-fajl destinazzjoni. U mbagħad, dak li huwa l-aħħar linja ta 'pseudocode? Xi ħadd li ma jingħatawx me xi ħaġa s'issa. STUDENT 17: Agħlaq l-fajls? JASON Hirschhorn: Eżattament. Agħlaq il-fajls. Allura hemm pseudocode tagħna. Jien ser tpoġġi l-pseudocode fis gedit, u fi ftit minuti aħna se kodiċi dan flimkien. OK. Let us tibda bħala grupp. Nishant, I jkollhom fajl ġdid tiegħi. Stajt biss miftuħa dan up. Dokument Untitled 1. X'inhu l-ewwel ħaġa I għandha tagħmel? Nishant: Inkludi libreriji? JASON Hirschhorn: OK. What libreriji? Nishant: Stdio.h, stdlib.h, nemmen? JASON Hirschhorn: OK. X'inhu stdlib għall? Nishant: I nesa. JASON Hirschhorn: OK. Allura jinkludu stdio. X'għandi nagħmel anke qabel I tibda kodifikazzjoni? Nishant: Ikteb header? JASON Hirschhorn: Kif nista 'nikseb dan kkulurita? [Voices INTERPOSING] Nishant: Kif tista 'tikseb it kkulurita? JASON Hirschhorn: Kif nista kulur kodifikazzjoni? Nishant: I do not know. Oh. Ħlief. JASON Hirschhorn: Save. Iva. I għandha ħlief bħala. C. Allura jiffrankaw fuq il-desktop bħala cp.c. Sweet. U jekk irrid li tikseb stil sħiħ punti, dak li għandi jinkludu fil-quċċata? Nishant: Inti tista 'tikteb ismek, isem tal-programm, u l-iskop tal-programm kif ukoll? JASON Hirschhorn: Jidher tajjeb. Eċċellenti. Allura inti ħadthom bdew us off perfettament. # Jinkludu - aħna ser wkoll tikteb - OK. So I think jien kollha stabbiliti biex tmur. Min għandu l-ewwel linja tal-kodiċi għalija - jew l-ewwel linji ta 'kodiċi li li ser jieħu biex jissodisfaw l-ewwel tagħna tikkummenta bil pseudocode? You. STUDENT 18: Jekk Ma Ikun int argc, u mbagħad char * ARGV? JASON Hirschhorn: Naħseb int dritt. Ejja bidla li int prinċipali, paren miftuħa, argc int, comma, char * ARGV? Bħal dik? STUDENT 18: Brazzi. JASON Hirschhorn: Brazzi. Parentesi miftuħa, parentesi magħluqa, ġenitur qrib. Perfect. Now I tista 'tieħu l-argumenti kmand tal-linja. OK. Naraw li qed jingħataw żewġ fajls. Inti tista 'tagħti me dan ukoll. STUDENT 18: Jekk argc - dan wieħed ma ugwali 3. JASON Hirschhorn: Jekk paren miftuħa argc ma ugwali 3? STUDENT 18: Yeah, inti tirritorna 1 jew xejn. JASON Hirschhorn: Jiddispjacini. STUDENT 18: Return 1 jew xejn. JASON Hirschhorn: Ritorn 1. OK? Great. Iftaħ iż-żewġ fajls. Min jista 'jgħini tiftaħ fajls kemm? Min ma tani kodiċi għadhom? Kurt? Kurt: Allura tappijiet kollha F-I-L-E sors star. JASON Hirschhorn: jien ser li tieħu l-vokali. Dawk huma jibred. Huwa simili Tumblr. STUDENT 18: Ugwali fopen - JASON Hirschhorn: Ugwali fopen? STUDENT 18: paren Open, ARGV, parentesi miftuħa. JASON Hirschhorn: Stenna. Jiddispjacini. Paren Open. OK. STUDENT 18: Yeah. ARGV sub 1. JASON Hirschhorn: Sub 1? STUDENT 18: Yeah. ARGV bracket open 1 - iva. U mbagħad comma, u mbagħad miftuħa double kwotazzjoni, r, kwotazzjoni doppja, paren qrib, virgola. JASON Hirschhorn: Sweet. U xi ngħidu dwar l-ieħor? STUDENT 18: Simili ħafna, iżda minflok ta 'S-R-C, youd sejħa hija D-S-T. JASON Hirschhorn: Oo! I bħal dik. STUDENT 18: Just D-S-T. Yeah. U mbagħad ARGV, parentesi miftuħa, 2. Yeah. U mbagħad w minflok r. Yeah. JASON Hirschhorn: Great. Koppja li jmiss ta 'linji. Ukoll, jekk xi ħadd ikollu l-affarijiet li żżid mal linji li aħna ghamilt, tħossok liberu li żid dawk ukoll. Iċċekkja biex tiżgura la huwa NULL. Min jista 'jagħti me-kodiċi I bżonn jissodisfaw dik il-linja ta 'pseudocode? Archer. ARCHER: Jekk src ugwali ugwali NULL jew DST ugwali ugwali NULL, allura inti tirritorna - JASON Hirschhorn: What? ARCHER: Ritorn 2? JASON Hirschhorn: Ritorn 2. Mela jekk src paren open ugwali ugwali NULL, jew - kwalunkwe li thing's - pajp? Pipe? Aħna ser sejħa hija pajp. Pipe, pajpijiet, DST ugwali ugwali NULL, ritorn 2. OK? Sakemm aħna qed barra ta 'bytes - aħna tip ta 'skipped fuq dan il-pass mill- il-parti pseudocode li tmur hawn. Iżda sakemm aħna qed barra ta 'bytes - dak ma li ħoss bħal? Liema tip ta 'struttura C - imma jien ma jużawx l-istruttura kelma, għaliex aħna qed tmur biex tibda tuża li f'każijiet oħra - iżda għodda C ma li ħoss bħal? STUDENT 19: A loop. JASON Hirschhorn: A loop. Ħsejjes bħal loop. Hekk li tista 'tagħti me l-ewwel linja tal-kodiċi loop dritt hawn? Tista 'wkoll pick liema tip ta' loop trid, jekk inti tagħti me din il-linja tal-kodiċi. Hemm tliet tipi. Ikollok li pick. Nissuġġerixxi wieħed minn dawn. Avi. Liema wieħed tridu? AVI: GĦALL. JASON Hirschhorn: GĦALL. AVI: Int I ugwali żero. JASON Hirschhorn: OK. AVI: Din il-parti M'inix ċert dwar. Imma i huwa inqas mid-daqs ta 'sors star? M'inix ċert ta 'dak. JASON Hirschhorn: OK. AVI: Għaliex inti tixtieq l- daqs tal-fajl, id-dritt? JASON Hirschhorn: Allura dan probabbilment mhux se tagħtina l-daqs tal-attwali fajl fil-bytes. Allura dak li inkella jista 'nagħmlu? Liema hija tip ieħor ta loop? Jew għandna twaħħal mal-loop GĦALL? STUDENT 20: Tista 'tagħmel loop WAQT? U mbagħad, dak youd tagħmel huwa you'd - għaliex għandna char * għall-fajl. Allura jekk aħna biss iżommu inkrementazzjoni li sakemm aħna'd ssib il-karattru NULL fuq l-aħħar ta 'dan? Jew l-ebda, huwa li mhux kif fajls taħdem? JASON Hirschhorn: Allura nistgħu iżommu inkrementazzjoni tad char * sakemm insibu l-NULL - STUDENT 20: Essenzjalment jibqgħu għaddejjin karattru minn karattru sakemm aħna hit l-aħħar tal-fajl. JASON Hirschhorn: Iva. Allura dak hu li rridu nagħmlu. Aħna tixtieq li żżomm qari, karattri minn karattru, sakemm aħna jiksbu l l-aħħar tal-fajl. STUDENT 20: Yeah. Sib - x'inhu l-aħħar jew sinjal stop fl-aħħar ta 'fajl test. JASON Hirschhorn: OK. Allura meta aħna tikseb sa l-aħħar tal-fajl - kif nafu aħna lħaqniha it-tmiem ta 'fajl? Jekk jien ssejjaħ - hekk ejja pass lura. X'inhu funzjoni? Ejja mur din il-linja dritt hawn. Aqra mill-fajl sors. Min jista 'jagħti me dik il-linja tal-kodiċi? STUDENT 21: Fscanf? JASON Hirschhorn: Fscanf. OK. X'jiġri jekk I trid taqra, ħafna speċifikament, byte wieħed? STUDENT 21: I do not know. JASON Hirschhorn: OK. Saħansitra aktar sempliċi milli fscanf - dak li hu - Irrid li tinqara minn fajl sors? Tinqara minn fajl sors. X'inhu funzjoni - yeah. STUDENT 22: Huwa fread? JASON Hirschhorn: Fread. I think ejja nibqgħu ma li wieħed għal issa. Liema tip ta 'argumenti ma fread tieħu? STUDENT 22: Probabbilment l-fajl tat-tip, u mbagħad post fil-fajl? JASON Hirschhorn: X'nista 'tip here ċifra barra dak it-tip ta 'argumenti fread tieħu? STUDENTI MULTIPLU: Man fread. JASON Hirschhorn: Man fread u fwrite. Id-Dehra hang out flimkien. Allura fread tieħu kif ħafna argumenti? STUDENT 23: Erba. JASON Hirschhorn: Huwa jieħu erba 'argumenti. Huwa jieħu pointer, daqs, u li ħaġa, li huwa stramb, u xi fajl. OK? Ejja taqra dwar dan id-dritt hawn. "Il fread funzjoni taqra memb n elementi ta 'data, kull bytes daqs twil, mill-fluss indikat mill fluss, ħażna lilhom fil-post mogħtija minn pointer. " Allura erba 'argumenti. Għaliex ma I biss kopja dan, u paste dritt hawn. OK. Hekk li tista 'tibda timla l- dawn l-argumenti għalija? Avi. AVI: Oħroġ l-vojt. Poġġi biss src. Oħroġ pointer u l-istilla. Poġġi src. Imbagħad - JASON Hirschhorn: So jien ser tieqaf int hemm, għaliex dan huwa żbaljat. Int dritt ma src, iżda fejn għandhom src imorru? [Voices INTERPOSING] JASON Hirschhorn: għandu jmorru fuq hawn. Dik hija l src - src tagħna huwa tip. Ejja nħarsu hawn. Dan qed titlob għal FILE tip *, aħna fil-fatt normalment tara minnhom bħal dik. Allura dan qed titlob sabiex argument ta ' tip ta 'fajl * imsejjaħ stream li src. OK? X'inhu d-daqs ta 'affarijiet do irridu taqra? Jiena ħadt dan fil- deskrizzjoni problema. STUDENT 24: byte wieħed kull darba. JASON Hirschhorn: One byte. Kif big huwa byte? Id-daqs tiegħu huwa fil-bytes, iva, liema nista 'nagħmel hemm dritt? STUDENT 25: One. JASON Hirschhorn: One. Dritt. Id-daqs tiegħu huwa unità byte, għalhekk 1 huwa 1 byte. Kemm nista trid taqra fi żmien. STUDENT 26: One? JASON Hirschhorn: Ħaġa waħda. I trid taqra ħaġa waħda tad-daqs 1, wieħed gidma fi żmien. U fejn nista poġġiha, ladarba I taqraha? STUDENT 27: Destinazzjoni? JASON Hirschhorn: So I ma tista 'tpoġġi dan straight fis destinazzjoni. STUDENT 28: Inti tpoġġi gonna fis terz pointer? STUDENT 27: Sal-destinazzjoni. JASON Hirschhorn: OK. Yeah. STUDENT 29: Inti tista 'tiddikjara xi ħaġa li taġixxi bħala ħażna temporanja qabel. JASON Hirschhorn: OK. Agħti me li. STUDENT 29: file ieħor pointer, forsi? JASON Hirschhorn: OK. Allura dan huwa star vojt - huwa tip null star, u għalhekk ma għandek tkun pointer fajl. U jekk jien qari byte wieħed, fejn tkun post tajjeb li jaħżen byte wieħed? STUDENT 29: Firxa? JASON Hirschhorn: An firxa. OK. U x'iktar hija xi ħaġa li l- biss qies tal byte wieħed? STUDENT 30: A char *? STUDENT 29: Yeah. JASON Hirschhorn: A char * mhuwiex byte wieħed. STUDENT 29: A char. JASON Hirschhorn: A char huwa byte wieħed. Dritt? Mela ejja sejħa dan buffer huwa ġeneriku isem użat għal dawn l-affarijiet biex jaħżnu xi ħaġa temporanjament. So I joħolqu buffer. Dritt? Iżda dan ma tieħu vojt *. Allura forsi inti dritt, li għandu jkun buffer mid-daqs 0. Allura huwa jaħżen waħda - dritt. Minħabba dan id-dritt hawn - char buffer huwa karattru, iżda dan jieħu vojt * - a pointer. So I tista 'tagħmel dan u issa buffer hija pointer. X'aktar jista 'nagħmel? STUDENT 31: Poġġi stilla li jmiss char. JASON Hirschhorn: I jista ' ħolqu dan char *. OK. X'hemm ħaġa oħra I tista 'tagħmel? Jew ejja jmorru ma 'dan wieħed. Char * buffer, iva, liema npoġġi fil hawn? STUDENT 31: Riserva. JASON Hirschhorn: Riserva. Buffer hija pointer għal char. U f'dak il-lok, aħna qed tqegħid byte wieħed ta 'xi ħaġa li aħna stajt taqra. Yeah. Avi. AVI: Just a quick kwistjoni. Tixtieq li malloc buffer? JASON Hirschhorn: Min jista ' twieġeb din il-kwistjoni? STUDENT 32: Well, ma verament punt li xejn dritt issa, hekk - JASON Hirschhorn: Imma irridu malloc dan? STUDENT 32: Jekk ġejt biex tagħmel dan li mod, I raden, yeah, għaliex youd bżonn xi post għal dan il-punt li. JASON Hirschhorn: Do we għandek malloc dan? STUDENT 33: Jekk int ser jużawha barra tal-linja. JASON Hirschhorn: Are we ser jużawha barra tal-linja? STUDENT 34: Iva. STUDENT 35: Stenna. Do irridu li tiddikjaraha fil-linja li lil hinn? JASON Hirschhorn: So I raden għandna xi psewdo WAQT loop hawnhekk li aħna qed jippruvaw figura, li aħna ma gotten li s'issa. Aħna ma bżonn li malloc dan. Aħna qed joperaw fil-prinċipali, huwa biss se biex jintużaw ġewwa dan loop. Dan ma jeħtieġx li jeżistu barra dan. Allura jista 'jkun fattur varjabbli lokali. Għandek pointer biex varjabbli lokali. STUDENT 36: Imma din mhix tipponta lejn xejn. JASON Hirschhorn: Le, mhuwiex initialized għal xejn. Iżda aħna ma tkunx qed tmur biex jużawh ukoll. Aħna qed tmur biex xi ħaġa fil- hija l-ewwel darba nużawha. Allura li jidher OK. Hekk aħna ma bżonn malloc hawn. U naħseb li huwa OK kif inhu. OK. Għandna l-linja fread. Ejja nagħmlu l-linja li jmiss. Jekk irridu li jikteb lill fajl, dak li huwa funzjoni tajba għall-użu li tagħmel dan? STUDENT 37: Fwrite? STUDENT 38: Fprintf? JASON Hirschhorn: Fprintf hija waħda. X'hemm wieħed ieħor? STUDENT 39: Fwrite. JASON Hirschhorn: Fwrite. U għall-iskopijiet tagħna, fwrite, li rajna hawn, huwa probabbilment l-aħjar għażla. Huwa jieħu erba 'argumenti kif ukoll. Nishant, inti tista 'tagħti me-argumenti? Nishant: għaddejjin L-ewwel wieħed li jkun biss buffer. JASON Hirschhorn: OK. Nishant: It-tieni l-waħda biss se tkun l-1. It-tielet wieħed għaddej biex tkun 1. U r-raba wieħed se tkun DST. JASON Hirschhorn: Does xi ħadd ikollu xi mistoqsijiet dwar dik il-linja? Li jidher tajjeb. OK. Allura issa jidher qisu l-unika ħaġa li aħna qed nieqsa - fil-fatt, ejja ikteb dan l-aħħar linja. Agħlaq il-fajls. Min jista 'finitura us up miktub dawn l-aħħar żewġ linji? Iva. Jiddispjacini, dak l-isem tiegħek? LUCY: Lucy. JASON Hirschhorn: Lucy. LUCY: src Fclose u mbagħad destinazzjoni fclose. JASON Hirschhorn: Fclose, paren miftuħa, src, paren qrib, virgola. U fclose - yeah? LUCY: parentesi Open, DST u mbagħad virgola. JASON Hirschhorn: Great. U dak li għandi jinkludi fl-aħħar? LUCY: Ritorn 0. JASON Hirschhorn: Ritorn 0. Għandi? Just mistoqsija. Do we għandhom jinkludu ritorn 0? STUDENTI MULTIPLU: Le JASON Hirschhorn: Le Main ma awtomatikament jekk ikollok l-aħħar. Imma naħseb li huwa sabiħ li jinkludu b'mod espliċitu. Speċjalment meta aħna qed jirritornaw oħra affarijiet matul il-programm. OK. Dan huwa dak li aħna qed nieqsa - WAQT liema? Min jistgħu jaħsbu xi - għandha xi sens ta 'liema affarijiet tista 'tmur fil hemm? Anki jekk huwa biss f'xi pseudocode bħal lingwa? Liema huma aħna verament - liema do irridu imorru sa? Yeah, Lucy. LUCY: It-tmiem tal-fajl. JASON Hirschhorn: It-tmiem tal-fajl. Allura dak li taħseb jfisser minn tmiem tal-fajl? LUCY: Ladarba inti tilħaq il- tmiem tal-file, stop. JASON Hirschhorn: OK. Allura ladarba aħna jilħqu t-tmiem tal-file. Kif inkunu nafu meta aħna lħaqniha l-aħħar tal-fajl? STUDENT 40: I think buffer se jiġu ffissati għal NULL. STUDENT 41: Riserva ikun iddikjarat ġewwa l-linja. JASON Hirschhorn: Allura inti taħseb buffer se jiġu ffissati għal NULL. Għaliex kieku buffer jiġu stabbiliti biex NULL? STUDENT 40: Għaliex meta inti fread, int jippruvaw joħolqu xejn fis buffer. JASON Hirschhorn: OK. Allura inti qed jaħsbu fread - meta konna laħqu t-tmiem tal- file, x'inhu fread se jagħmlu? Naħseb li l-kwistjoni għandna biex insemmu. X'jagħmel fread do? Ma tpoġġi NULL fl buffer, jew ma tagħmel xi ħaġa oħra? Kif nistgħu ċifra barra dak li ma? STUDENT 42: Man. JASON Hirschhorn: Man. Mela ejja nħarsu hawn fuq. Ritorn valur. Fuq is-suċċess, fread u fwrite jirritorna l- numru ta 'oġġetti jaqraw jew jiktbu. Dan in-numru huwa ugwali għan-numru ta 'bytes trasferiti biss meta d-daqs huwa 1. Jekk isir żball, jew it-tmiem tal- fajl jintlaħaq, il-valur tar-ritorn hija għadd oġġett qasir jew 0. Allura għall-għanijiet tagħna, jekk jilħaq fread l-aħħar tal-fajl, u jaqra minn l-aħħar tal-fajl, hemm xejn xellug biex jinqraw, dak li huwa għaddej biex jirritornaw? STUDENT 43: Zero? JASON Hirschhorn: What? STUDENT 43: Zero? JASON Hirschhorn: Zero. Huwa ser jirritorna żero. Allura aħna nafu li fread, meta konna laħqu t-tmiem tal-fajl, huwa għaddej li jirritornaw żero. Kif nistgħu nużaw dan għall-vantaġġ tagħna? AVI: Tista 'tiddikjara varjabbli barra tal-linja imsejħa check. Jekk check ugwali - għal issa - wieħed. JASON Hirschhorn: OK. AVI: U allura inti tista 'tpoġġi IF dikjarazzjoni dritt wara fread tgħid jekk fread ugwali zero - no. JASON Hirschhorn: Min jistgħu jgħinu Avi out? AVI: X'inhu l-valur lura mill fread? JASON Hirschhorn: Aħna biss marru fuq li. AVI: Kif inti jirrappreżentaha? JASON Hirschhorn: Allura dan jirritorna - ejja tfittex up hawn - dan jirritorna a size_t, li huwa essenzjalment integer. Allura dan jirritorna numru sħiħ. U fil-każ tagħna, se ritorn 1 jew 0 - 1 jekk tinqara ħaġa waħda - byte wieħed, u 0 jekk aħna ħadthom laħqu t-tmiem. Mela jekk fread - yeah? STUDENT 45: Ma tistax inti biss tpoġġi l-sħiħ fread (buffer, 1, 1, SRC) fil- filwaqt li loop? JASON Hirschhorn: Allura inti tipproponi tagħmel dan fil hemmhekk? [Voices INTERPOSING] JASON Hirschhorn: Żomm fuq. Allura aħna qed ħelset lid 'dak. Allura inti qed tipproponi tqegħid fread fis hemmhekk? Dak li għandna wkoll timxi jekk inti tixtieq li tagħmel dan? STUDENT 45: Il-buffer barra. JASON Hirschhorn: Aħna għandhom wkoll timxi dan hawn. STUDENT 45: Iżda ma li kontinwament jġorrhom quddiem? [Voices INTERPOSING] JASON Hirschhorn: OK. Allura dan huwa dak Okshar propost. Aħna joħolqu buffer tagħna. Aħna fread WAQT, allura aħna fwrite. Ħsibijiet dwar dan? STUDENT 46: biss mistoqsija tiegħi hija, kieku fil-fatt twettaq il-fread kmand? JASON Hirschhorn: mistoqsija Great. Meta int tqegħid sejħa funzjoni ġewwa ta 'kondizzjoni, ma li sejħa funzjoni tesegwixxi? Imxejna eżempji ta 'dan qabel. Dritt? STUDENT 46: OK. Yeah. Għalhekk ma tesegwixxi. JASON Hirschhorn: Imxejna affarijiet dehru qabel bħal dik, fejn għandna sejħa funzjoni ġewwa ta 'kundizzjoni. Does li sejħa funzjoni tesegwixxi? Iva. Għalhekk it-tweġiba hija iva. Din is-sejħa funzjoni se tesegwixxi. Iżda għal darb'oħra, huwa dak li rridu? Liema huwa mod wieħed kif nistgħu figura out jekk huwa dak li rridu? STUDENTI MULTIPLU: Run? JASON Hirschhorn: Nistgħu run. Iżda qabel ma nagħmlu dan, nistgħu raġuni wkoll permezz ta 'dan. Jekk - ngħidu aħna għandna byte wieħed fil tagħna fajl, aħna ser jiksbu l hawn, aħna ser jiksbu għal dan il-kodiċi. Dan se jibqa 'għaddej. fread se terġa 'lura byte wieħed u jaħżnuh fil-buffer. U dan se tevalwa 1, dritt, wara li jirritorna 1. Għalhekk, filwaqt li 1. Ma jfissirx li l-kodiċi ġewwa l loop WAQT se tesegwixxi? STUDENT 47: Yeah. Huwa veru. JASON Hirschhorn: Iva. 1 huwa veru. Mhuwiex 0. Allura l-kodiċi ġewwa hawnhekk se tesegwixxi. Allura aħna ser jiktbu dak. Aħna ser jimxu lura għal dan line għal darb'oħra. Issa għandna - aħna qed fl-aħħar tal-fajl tagħna. Naqraw mill-aħħar tal-fajl tagħna, għaliex aħna biss kellhom byte wieħed fiha. Fread jirritorna 0, ħwienet xi ħaġa buffer. I onestament ma nafx dak huwa jaħżen fil buffer. Nistgħu probabbilment tfittex up biex tara dak li tagħmel. Li jien onestament ma nafx. Ma nafux, quién dak huwa jaħżen fil buffer? Iżda dan ma ritorn 0. U se Filwaqt 0 tesegwixxi? WAQT 0, mhux se jwettqu. Mela allura aħna ser jimxu stabbiliti hawn. Mela ejja jiksbu turija tal-idejn jekk dan huwa l-kodiċi għandna run, jew jekk aħna għandha tagħmel bidliet ewwel. Mela jekk inti taħseb - għandek tivvota. Jekk taħseb li għandna run dan il-kodiċi kif inhu, jekk jogħġbok jgħollu naħa tiegħek. OK. Hemm wieħed - do għandek xi mistoqsija, tħassib? Yeah. STUDENT 48: Wara nimxu buffer barra tal-loop, do we għandek malloc dan? JASON Hirschhorn: mistoqsija Great. Wara nimxu bafer barra tal- loop, għandna biex malloc dan? Din hija kwistjoni ambitu. Jekk aħna initialize buffer barra ta 'dan loop, se jeżistu ġewwa tal-linja? STUDENTI MULTIPLU: Iva. JASON Hirschhorn: Iva. Tkun tkopri l-ġewwa mill-linja, u, verament, xejn taħt dan ġewwa ta 'dan il-kodiċi, inkluż l- affarijiet ġewwa hawn. Hekk aħna ma bżonn li malloc dan. Huwa varjabbli lokali, u l-ambitu tagħha għadu jinkludi l-loop. STUDENT 49: Għandna bżonn ħielsa it? JASON Hirschhorn: Do we bżonn buffer free? STUDENT 49: Yeah, jekk aħna ma malloc. JASON Hirschhorn: Do we bżonn buffer free? Aħna ma. Għal darb'oħra, huwa varjabbli lokali, hekk aħna ma bżonn biex ħielsa minnha. OK. Ejja naraw x'jiġri. Għalhekk huwa uninitialized. Dan kien dak li xi ħaġa li Marcus proposti aktar kmieni. Allura aħna għandna dan l-iżball, buffer varjabbli huwa uninitialized meta użat hawnhekk. Kif nistgħu jiffissaw dan? STUDENT 50: malloc dan? STUDENT 51: Ugwali NULL? STUDENT 52: Say buffer ugwali NULL. JASON Hirschhorn: OK. Jidher tajjeb. Għandna issa. Ejja tinħoloq xi ħaġa li jippruvaw ikkupjar. Allura aħna għandna fajl test tagħna. Kif nistgħu run dan il-programm? Yeah. STUDENT 53: Tista 'tagħmel dot mmejla cp, test.txt. U allura inti tista 'isem ieħor fajl li se taħżen fis. JASON Hirschhorn: OK. Aħna ser sejħa hija out.txt. Kessaħ? Tort seg. Ħsibijiet dwar it-tort seg? Dan huwa kbir. Kif nistgħu taf fejn it-tort seg hu? What? STUDENT 54: GDB. JASON Hirschhorn: GDB. We run GDB billi tikteb GDB dot mmejla, l-isem tal-programm tagħna. Ebda argumenti linja tal-kmand hemmhekk. Aħna ser jistabbilixxu 'fini fuq prinċipali. Jekk nixtieq li jibdew GDB, x'għandi nagħmel? STUDENT 55: R. JASON Hirschhorn: R. U allura dak? STUDENT 55: L-argumenti? JASON Hirschhorn: Imbagħad il- argumenti kmand tal-linja. Ejja walk permezz. N huwa biss tieħu me linja b'linja. Jien se jmorru sa I nikseb tort seg tiegħi. Hemm tort seg tiegħi. Jidher qisu fread kkawżata tort seg tiegħi. Naf fread kkawżati tort seg tiegħi, minħabba li kienet l- line aħna biss esegwiti. U l-unika ħaġa li kien jiġri f'dik il-linja - żewġ affarijiet kienu qed jiġri. Fread kien għaddej, u mbagħad konna jagħmlu xi kontroll WAQT. Jien lest li bet li l WAQT verifika ma kienet qed tikkawża tort seg tiegħi. Ħafna probabbli, fread kien jikkawżaw tort seg tiegħi. I wkoll tara xi ħaġa hawn, memcopy. Kopja memorja. Ħsejjes bħal jiċċaqilqu memorja minn post għall-ieħor. Ħsejjes bħal xi ħaġa li jiġri fil fread, forsi xi memorja jiċċaqalqu minn hawn hawn. Ejja jgħaddu din darb'oħra. Kif nista 'tibda dan matul u run mill-ġdid? Yeah. STUDENT 56: Għandek bżonn biex l ampersand qabel buffer? JASON Hirschhorn: So ampersand qabel buffer jagħtu me l-indirizz tal- buffer, li huwa char *. Ejja run permezz ta 'dan wieħed aktar ħin. Kif nista run permezz tiegħu waħda aktar ħin? STUDENT 57: Tista 'biss tip darb'oħra? JASON Hirschhorn: Just tip run mill-ġdid. Allura aħna qed mhux se jesegwixxi din il-linja. Allura buffer hija pointer NULL. Tikkoreġi? Huwa tipponta lejn - ejja ara. Jekk għandna tagħna - tfassal stampa ta 'malajr ta' dan. Jista kulħadd ara jekk I jiktbu hawn fuq? Allura fil-ċmieni, għandna lokali varjabbli u huwa msejjaħ buffer, u huwa pointer għal char. X'inhu l-indirizz huwa dan char fi? STUDENT 58: 0x0. JASON Hirschhorn: Dritt. Dak hu li dan huwa. Fil hawn, ġewwa buffer, huwa maħżun 0x0. Dan huwa dak li għandna - it- setup għandna dritt issa. Għalhekk din il-linja, fread, tpoġġi xi ħaġa minn sors fejn? F'din il-kaxxa jew il-kaxxa? Liema kaxxa? Xellug kaxxa jew kaxxa dritt? Din il-kaxxa dritt. Dan isegwi l-pointer, u tqiegħdu fil hawn. Meta nippruvaw u l-memorja touch fuq post 0, liema do we? A tort segmentazzjoni. Dik hija l-iżball li għandna dritt issa. Yeah. STUDENT 59: Ma ikollok tpoġġi buffer star? Jew xejn? Għal fread? JASON Hirschhorn: So fread jieħu pointer. Għalhekk jgħaddi fi buffer. U allura dan ser de-referenza x'imkien ġewwa fread. Iżda għal darb'oħra, rajna, hija tieħu pointer. Aħna ma bżonn li tgħaddi dan buffer star. Li tkun tgħaddi huwa x'ikun l hawn. U li probabbilment tagħtina żball għaliex aħna qed de-referenzar dan. Dritt? Meta aħna de-referenza dan il-werrej, meta aħna tipprova l-aċċess dan il-post, aħna jkollna żball - tort segmentazzjoni tagħna. So - oops. Aħna ser nieqaf out GDB. Linja tagħna - problema tagħna - huwa dritt hawn fuq din il-linja. U huwa problema għaliex ta 'din il-linja. Kif nistgħu toħloq kaxxa li huwa aċċessibbli fil fread. Dritt? Għandna bżonn li jinħoloq kaxxa li wieħed byte kbir, id-daqs ta 'char. Iżda għandna bżonn li l-kaxxa li jkun aċċessibbli meta din il-funzjoni tesegwixxi. Għalhekk, fejn - yeah. Xi ideat? STUDENT 60: Biss sett bħala karattru każwali. Just do ugwali buffer char l-karattru. U mbagħad, meta jkollok buffer hemm - JASON Hirschhorn: Stenna. Char buffer? Allura l-ebda star? STUDENT 60: Yeah. Oħroġ l-istilla. Huwa ugwali għal karattru każwali. JASON Hirschhorn: OK. Allura tagħti me wieħed. STUDENT 60: Like a jew xi ħaġa. U mbagħad meta jkollok buffer hemm, inti tuża - STUDENT 61: Star? Oh no, l-ampersand. STUDENT 60: Uża l-ampersand. JASON Hirschhorn: OK. U xi ngħidu dwar fit fwrite? STUDENT 60: Uża l-ampersand ġdid. JASON Hirschhorn: Kull dritt. Allura idea tiegħek, aħna joħolqu char u tpoġġi xi ħaġa fiha, u mbagħad jikteb għal dak char. STUDENT 60: Yeah. JASON Hirschhorn: What do nies jaħsbu? STUDENT 62: Huwa convoluted. JASON Hirschhorn: OK. Ejja tiġbed out. Allura dan iż-żmien, jien ser tiġbed dan aħmar fuq il-munzell hawn, u allura aħna se jkollhom - ooh! Jiddispjacini. Allura dan iż-żmien aħna għandna xi ħaġa imsejħa buffer, u huwa fuq il-munzell. Tikkoreġi? U aħna qed iffrankar fl hu, inizjalment. Imbagħad għandna sejħa tagħna biex fread. Dak fread ma hija tieħu byte minn fajl u tagħna tqiegħdu x'imkien. Tpoġġiha hija fi kwalunkwe il- ħaġa li tindika li. Ukoll, qabel ma kellna dan l-indirizz - 0x0. Issa dak indirizz għandna? STUDENT 63: Tkun xi tkun indirizz buffer hija. JASON Hirschhorn: Tkun xi tkun indirizz buffer hija. Huwa probabbilment se tkun xi ħaġa bħal dik. Probabbilment se tibda bil-b u ta 'f, u mbagħad ikollhom sitt oħra numri hexadecimal. Ma jimpurtax. Xi indirizz. U aħna qed tgħaddi dik indirizz pulzieri U aħna qed tmur biex jitqiegħdu waħda tagħna Ħaġa byte f'dak l-indirizz. Allura aħna qed tmur biex jitqiegħdu waħda tagħna Ħaġa byte ġewwa hawn. U allura aħna qed tmur biex jiktbu mill- x'hemm qatt ġewwa hawn. Ħadd ma jkollu xi mistoqsijiet dwar dan? Li jaħseb dan il-kodiċi se taħdem? Għolli naħa tiegħek jekk taħseb li dan il-kodiċi se taħdem. Inti għandek tieħu pożizzjoni. U li jaħseb dan il-kodiċi mhux se taħdem? Jgħollu naħa tiegħek. Kulħadd għandu jkun kuxjenza idejn tagħhom. OK. Michael, fejn inti wieqfa? MICHAEL: I ma tistax tiddeċiedi. Tip ta 'fin-nofs. JASON Hirschhorn: Inti fin-nofs. Pick wieħed. MICHAEL: I ser ikollhom fidi u jgħidu li se taħdem. JASON Hirschhorn: OK. Int ser ikollok fidi u jgħidu taħdem? Dak li ġara? [Voices INTERPOSING] JASON Hirschhorn: L-ebda ħsara seg. Kif nistgħu tikkontrolla biex tara jekk żewġ affarijiet huma ugwali? Żewġ fajls huma ndaqs. STUDENT 64: Diff. JASON Hirschhorn: Diff. Kontrolli diff għad-differenzi bejn żewġ fajls, u jekk dan jirritorna xejn, dawn qed identiċi. U jekk aħna miftuħa up, irridu jiksbu fajl tagħna. Allura li kien is-soluzzjoni korretta. Ejja nħarsu lura lejn din waħda aktar ħin. Aħna fil-fatt lanqas biss bżonn li initialize dan. Hi probabilment tfittex ftit cleaner jekk inti ma poġġiex xi ħaġa każwali fil hemmhekk. Il-punt li tkun, inti meħtieġ biex toħloq xi spazju biex jaħżnu xi ħaġa minn fread u jieħdu xi ħaġa minn fwrite. U li ħaġa kellu jkun jew lokali varjabbli fuq il-munzell - inti jistgħu stajt malloc'd xi spazju. Allura aħna fil-fatt jista 'jkollu malloc miktub hawn, u li ħadmu. U allura aħna ġew ħażna affarijiet tagħna x'imkien fuq il-borġ. Iżda dan huwa attwalment, probabbilment, l-aktar soluzzjoni eleganti. Just joħolqu xi spazju fuq il-munzell għal dawn l-affarijiet imorru. I jkollhom żewġ kummenti oħra. Jekk ġejt biex tieħu dawran f'dan, u mbagħad jiksbu skorja fuq dan, il-kummenti tiegħi tkun kif ġej. Dawn 1 huwa hawn, lili, tfittex bħal numri magic. Dan 1, f'termini ta 'fread, jagħmel sens. Dik hija l-numru ta 'affarijiet biex jaqraw jew jiktbu. Iżda dan wieħed dritt hawn għandhom probabbilment tkun xi ħaġa oħra. Allura dak li huwa soluzzjoni waħda? STUDENT 65: Daqs ta 'byte. JASON Hirschhorn: Bħal dak? STUDENT 65: Daqs ta 'char. JASON Hirschhorn: Daqs ta 'char. Yeah, byte mhuwiex tip. Allura daqs ta 'xogħlijiet char. Aħna jista 'jkollhom, fil-quċċata ta' kodiċi tagħna, # definit dak. Imsejħa BYTE xi ħaġa u huwa verament char. Attwalment, approċċ anki aħjar seta 'kien dan - Uint. Kulmin jafu liema dan huwa? Jiddispjacini. I jkollhom dan lura. Stenna, l-ebda. Liema mod ma tmur? Kulmin jafu liema dan huwa? Yeah. STUDENT 67: Suppost biex jgħinu standardizzati madwar affarijiet sistemi li jkollhom - bħal interi mhux iffirmat li għandhom 8 bytes? JASON Hirschhorn: C'est eżattament id-dritt. Fuq magni differenti, -daqs ta 'char - mhuwiex normalment char. Chars huma normalment byte wieħed. Iżda d-daqs ta 'tipi oħra tad-data huma daqsijiet differenti fuq magna 32-bit versus magna 64-bit. A uint8_t huwa dejjem 8 bits - dejjem byte wieħed. U għandi bżonn biex jinkludu li file standard header int. Allura issa, dan probabilment ġew l-aħjar mod li tikteb dan il-kodiċi. So I jeħles mill-numri magic. U Għandi wkoll aktar loġiku tip għall-buffer. Mhuwiex sempliċiment char, huwa byte, li huwa dak li nistennew li jkun. U sa hawn, aħna ħadthom attwalment kien daqsxejn aktar robust. Aħna ma ssejjaħ dan char, li - forsi, li jaf - tista 'tkun differenti daqs fuq magni differenti. Aħna fil-fatt qal dan huwa eżattament byte wieħed, dejjem, irrelevanti x'inhu. U jekk inħarsu hawn, nagħmlu cp. Uh-oh. Dak li ġara? STUDENT 68: Jista 'jinxtegħel. JASON Hirschhorn: What? STUDENT 69: Huwa? STUDENT 70: Inti ma jiddefinixxu bħala tip. STUDENT 71: Imma suppost jiġu definiti fl-istandard. STUDENT 72: X'qed jiġri? STUDENT 73: Għandhom jiddefinixxu jkun tappijiet kollha? JASON Hirschhorn: Għalhekk mhuwiex # tiddefinixxi. Attwalment, f'dan il-każ, jien ser tuża typedef. Għaliex aħna qed jużawha bħala tip f'post wieħed. Allura f'dan il-każ, aħna fil-fatt tixtieq li typedef simili aħna qed istampar tip ġdid byte, u huwa, essenzjalment, dan. Huwa daqsxejn differenti minn # tiddefinixxi. U issa, il-kodiċi tagħna jaħdem perfettament. Għalhekk, għal darb'oħra, # jiddefinixxu tieħu xi ħaġa, jissostitwixxiha kullimkien mal-ħaġa oħra. Huwa biss makro - shorthand biex jeħles ta 'numri magic. Iżda f'dan il-każ, għaliex aħna qed jużawha bħala tip - dritt hawn - sabiex dak ix-xogħol, għandna bżonn li typedef kwalunkwe byte huwa. U aħna qed jiddefinixxu dan id-dritt hawn. Mhuwiex Struct, huwa attwalment biss sħiħ mhux iffirmat. Huwa byte wieħed twil. Dan il-kodiċi se jkun disponibbli online, u inti kollha għandu jkollhom dan id-dritt issa. Allura aħna għandna - perfetta - 13 minuta xellug biex tmur problema fuq sett 5. Irrid li jimxu permezz copy.c flimkien, u allura aħna ser nitkellmu fil-qosor dwar il-partijiet l-oħra tal-problema stabbiliti. So let me pull up copy.c. U l-ħaġa jibred hija, aħna ħadthom attwalment diġà bil-miktub ħafna ta 'dan il-kodiċi. Il-kodiċi aħna kiteb litteralment biss ħareġ mill hawn meta I kien miktub dan fuq tiegħi stess. Iżda din hija copy.c, jifforma l-pedament għall-ewwel żewġ partijiet ta ' il-problema stabbiliti għall whodunit.c, li għandek bżonn biex tikteb, u resize.c. Recover.c, li hija t-tielet u l-aħħar parti mis-sett problema, mhuwiex bbażata off ta 'dan il-fajl. Int ser bżonn biex tikteb dan il-fajl, aħna nagħtuk template għal dak fajl, iżda din m'għandha x'taqsam xejn li tagħmel ma copy.c. Iżda minħabba copy.c huwa l-pedament għall- l-ewwel żewġ partijiet, aħna qed tmur jimxu permezz issa, hekk ikollok sens tajjeb ta 'dak li tagħmel. U l-kummenti tagħti xi wħud bogħod. Imxejna diġà bil-miktub xi wħud minn dan. L-ewwel, aħna qed jagħmlu ċert irridu jiksbu tliet argumenti. Sussegwentement, aħna qed ftakar l-isem fajl. Allura aħna skipped dan il-pass meta aħna kodifikati ħaġa tagħna - meta cp tagħna. Iżda hawnhekk, dawn qed jagħmlu hija daqsxejn aktar nadifa. Huma qed kkontrollar sabiex tagħmel żgur fajls kemm huma tajbin, fil- Minbarra l-ftuħ tagħhom. Aħna kiteb dan kollu kodiċi biss issa, hekk jien mhux se nitkellem fuq dan il-kodiċi. Li jmiss huwa xi għalf li l-speċifiku li it-tipi ta 'fajls li aħna qed jużaw, li huma fajls Bitmap. Fajls Bitmap għandhom xi metadata assoċjati magħhom. Allura l-ewwel koppja ta 'bytes jgħidlek dwar il-fajl. Dawn mhumiex l-kuluri ta ' l-pixel f'dak immaġini. Huma jgħidlek dwar il-fajl. U jekk inti taqra permezz-sett problema, inti ser ikollok ħafna aktar informazzjoni fuq liema tipi ta 'strutturi ta' metadejta huma inklużi ma bitmaps. Imma dak li għaliex għandna dan l-ewwel sett ta '- dan il-kodiċi dritt hawn. Aħna qari tal-metadata - żewġ biċċiet ta 'metadata - il-fajl header u l-header info. U aħna iċċekkjar xi partijiet minnha li kun żgur huwa fajl Bitmap vera qabel ma jkompli. U għal darb'oħra, dawn huma d-dettalji aħna m'għandhomx bżonn li jmorru fil issa. Jekk taqra permezz-sett problema, int ser tifhem dawn. Long storja qasira, dawn huma biss qal, dan huwa fajl Bitmap, u jikkonferma li. Sussegwentement, aħna qed tikteb dawk għall-fajl out. Naraw li hawn. Aħna qed miktub lill-pointer out. Sussegwentement, aħna qed jiddetermina padding. Għalhekk għal darb'oħra, kif partikolarità ma fajl Bitmap, xi linji jinkludu ikkuttunar fl-aħħar. U jekk inti taqra permezz-sett problema, inti ser jitgħallmu aktar dwar padding. Dan huwa l-formula li ssib padding. Importanti li għandek tiftakar - meta inti Tibdilx id-daqs ta 'Bitmap fajl, il-bidliet ikkuttunar. Meta inti Tibdilx id-daqs ta ' fajl, il-bidliet ikkuttunar. Huwa qatt ser tkun akbar minn 3 - dan ser ikun 0 sa 3, inkluża. Imma meta inti Tibdilx id-daqs ta ' xi ħaġa, il-bidliet ikkuttunar. Jekk I biss ikollhom pixel wieħed f'dak ringiela, I bżonn tliet bytes ta 'ikkuttunar, minħabba kull ringiela għandu jkun f'multipli ta 'erba' bytes twil fil-fajl Bitmap. Imma jekk I rdoppjat, li jmorru minn pixel wieħed għal żewġ pixel, kull wieħed minnhom, ejja ngħidu, huwa byte, imbagħad I bżonn żewġ bytes ta 'padding li jagħmlu li huwa ugwali għal erbgħa. Allura meta I Tibdilx id-daqs ta 'xi ħaġa, I-ħtieġa li jibdlu l-ammont ta 'padding I jkollhom. Does li jagħmel sens għal kulħadd? Sussegwentement, aħna jtenni fuq kull ringiela, jew permezz l-ringieli. U allura aħna jtenni permezz kull kolonna f'kull filliera. Aħna qed tittratta din Bitmap bħal a grid, bħall konna trattati il-bord fil-15. Simili aħna ttrattati l-briks meta aħna stampati lilhom fuq l-iskrin. A grid ta 'ringieli u kolonni. Imbagħad - aħna raw dan. Aħna attwalment biss kodifikati dan. Ħloqna xi ħażna temporanja. Naqraw fil hemm, u mbagħad aħna tikteb it out. Dan huwa eżattament dak li aħna biss għamlet. Sussegwentement, minħabba I qal kull linja jispiċċa f'xi ikkuttunar, aħna skip fuq dik padding - l-ikkuttunar qodma. U allura aħna żid lura. F'dan il-każ, aħna qed jinħolqu l-istess fajl eżatt. Aħna biss ikkupjar. Allura din il-linja huwa tip ta 'iblah. Nistgħu litteralment biss tpoġġi l-padding pulzieri Imma jekk inti Tibdilx id-daqs tal-fajl, inti xorta trid il-linja? Allura jekk aħna Tibdilx id-daqs ta 'fajl, do aħna xorta jridu skip fuq il-padding qodma? STUDENT 74: Iva. JASON Hirschhorn: Allura nagħmlu. Minħabba dan, għal darb'oħra, jittratta mal-fajl sors. Aħna ma jimpurtahom dwar l-ikkuttunar mis-sors fajl. Aħna rridu li tmur fil-linja li jmiss. Iżda aħna ma sempliċiment imqiegħdin lura l-ammont antika ta 'padding. Neħtieġu npoġġu lura l- ammont il-ġdid ta 'padding. Allura meta aħna qed jinbidlu l-daqs ta ' file, aħna xorta jridu skip fuq il- ikkuttunar fil-fajl qodma - dak aħna qed taqra minn. Imma dak li aħna qed miktub biex, aħna qed tmur li jeħtieġ li jitqiegħdu lura xi differenti numru ta 'padding li konna determinati. Yeah. STUDENT 75: L-ordni ta 'dawn iż-żewġ linji ma jimpurtax, right? Għax int tqandil fajls differenti. JASON Hirschhorn: Eżattament. L-ordni ta 'dawn iż-żewġ linji ma jimpurtax. Aħna tikteb din il-linja. Dan huwa hawn għall-fajl aħna qed miktub lill. Li l-importanti, hekk irridu jiksbu l- ammont korrett ta 'padding. Dan għandu jittratta ma 'l-fajl. Aħna rridu li skip dritt fuq il-padding. Aħna ma rridux li taqra - jekk aħna qed qari byte fi żmien, aħna ma jimpurtahom dwar dawk padding bytes. Aħna rridu li jimxu lejn il-linja li jmiss. Fl-aħħarnett bħad Lucy taw għalina, aħna qrib il-fajls u ritorn 0. Allura dan huwa copy.c. U aħna fil-fatt kiteb - aħna jintefqu ħafna mill- taqsima miktub dan, essenzjalment. Inti għamilt dan. Hekk nisperaw ikollok sens tajjeb ta 'x'inhu għaddej fil hawn. Id-differenza kbira, onestament, huwa biss din l-ewwel parti li jittratta pekuljaretajiet ta 'fajls Bitmap. So I jkollhom bħala slide tiegħi li jmiss, dak li rridu nagħmlu? Well, ejja jaħsbu dwar whodunit. U għal xi ħadd li tinqara permezz l-problema stabbilita, liema do we bżonn tagħmel whodunit? Simply. Aleja. Aleja: Tista 'tieħu l-parti ta 'kull pixel li tindika aħmar. U mbagħad - tip ta '? JASON Hirschhorn: OK. Sabiex jieħdu l-parti ta 'kull pixel li tindika aħmar. C'est qrib, iżda mhux kollha ta 'dan. STUDENT 76: Well, hemm modi differenti biex jagħmlu dan. JASON Hirschhorn: OK. Agħti me mod wieħed. STUDENT 76: Oħroġ l-aħmar, u imbagħad jenfasizzaw il-blu u aħdar. JASON Hirschhorn: OK. Allura minħabba dawn iż-żewġ modi - ħsejjes simili aħna tagħtiha pixel, hija għandu livell aħmar, blu, u aħdar. Aħna tixtieq li tibdel il-livelli relattivi ta ' l-aħmar, blu, aħdar u, jiddependi fuq dik pixel. Meta f'dan l-kodiċi għandu nibdlu l-aħmar relattiva, blu, aħdar u livelli ta 'pixel partikolari. Wara aħna stajt taqra dan - qabel aħna tikteb dan? Agħti me-numru linja. STUDENTI MULTIPLU: 83. JASON Hirschhorn: 83. Allura dritt hawn. Għal whodunit, il-kodiċi inti għandek bżonn write kollha għandhom imorru hemm dritt. U dan huwa l-uniku kodiċi għandek bżonn biex tikteb. Għaliex, bħal aħna jinstemgħu, kull ma għandek bżonn tagħmel hu li jibdlu dawn blu relattiva, livelli aħmar, u aħdar minn kull pixel. Inti stajt taqra fil, u issa int ser jikteb it out. Kif nista 'nikseb - jekk ikolli dan ħaġa imsejħa triple, dritt hawn, u huwa ta ' tip RGBTRIPLE - ukoll, jekk aħna ħarsu bmp.h, dak li huwa RGBTRIPLE? STUDENT 77: Huwa Struct. JASON Hirschhorn: RGBTRIPLE huwa Struct. Naraw li dritt isfel hawn. U hekk jekk jien ridt li l-aċċess, jiġifieri, l- livell aħmar tal-Struct, kif do I aċċess għall-livell aħmar ta 'din Istituzzjonjijiet? [KLASSI murmurs] STUDENT 78: RGBTRIPLE.rgbtred? JASON Hirschhorn: Huwa li korretta? STUDENT 79: Għandu jkun triple dot, minflok RGBTRIPLE dot? JASON Hirschhorn: Triple. Triple huwa l-varjabbli lokali, sabiex hawn, hemm ebda pointers hawn. Allura aħna biss jużaw il-dot notazzjoni. Dan se jagħti me-livell ta 'aħmar. Jekk irrid bidla, I biss sett hija ugwali għal xi ħaġa differenti. Għalhekk għal darb'oħra, din il-linja tal-kodiċi aċċessi dan il-varjabbli ġewwa dan Istituzzjonjijiet, u aħna tista 'tistabbilixxi li xi ħaġa ġdida. Allura għal whodunit, għal darb'oħra, dan huwa, essenzjalment, dak li għandna bżonn tagħmel. Sempliċi ħafna. Just bidla xi livelli relattivi, u dan huwa fejn dan il-kodiċi tmur. Resize, min-naħa l-oħra, huwa daqsxejn delikati. Fil-fatt, resize huwa probabbilment l- parti trickiest ta 'din il-problema stabbiliti. Għandna tliet minuti li jmorru fuqha. Iżda għal darb'oħra, aħna stajt diġà bil-miktub aktar ta 'dan il-kodiċi, hekk aħna għandu jkun pretty familjari. Liema huma xi affarijiet li rridu li jagħmlu fil- resize, jekk inti stajt taqra fuq il- problema iffissati? Jekk inti tagħtihom lili, aħna jistgħu jitkellmu dwarhom. Liema huma xi affarijiet li rridu nagħmlu? STUDENT 80: vertikalment - hekk ikollok biex orizzontalment resize, iżda vertikalment resize dan ukoll? JASON Hirschhorn: Mela jekk aħna qed jingħataw pixel, u rridu li resize minn b'fattur ta 'tnejn, issa jeħtieġ li jkun daqs ieħor orizzontalment u daqs ieħor vertikalment. Does li jagħmel sens? Yeah. Allura li probabbilment l- akbar sfida. U aħna ser nitkellmu dwar li fil-sec. Yeah. STUDENT 81: Il-mod I ħsieb ta 'dan kien inti meħtieġa print it out - JASON Hirschhorn: Stenna. M'għandekx jgħidulna dak li għamilt. Aħna qed tmur biex jitkellmu fil-loġika. STUDENT 81: OK. Liema kienet il-kwistjoni? JASON Hirschhorn: Inti biss mqajma naħa tiegħek. Ma kien hemm l-ebda kwistjoni. Let me jippreżentawha. Let me biss jiddiskutu dan fil-qosor. Allura aħna għandna pixel wieħed, irridu jirreplika, kemm orizzontalment kif ukoll vertikalment. Allura idealment dak li nagħmlu hawnhekk huwa, aħna jinqraw pixel tagħna, aħna tiktibha iżda ħafna ta 'drabi. Imma allura għandna trick tagħna hawn, għaliex imbagħad irridu li skip sa l- linja li jmiss u jiktbu fil- bidu tal-linja li jmiss. Mela jekk irridu li tiġi replikata kemm orizzontalment u vertikalment, dak li huwa mod tajjeb biex tagħmel dan - waħda tajba għalkemm tagħmel dan? Hekk aħna ma bżonn li kontinwament ifittxu madwar fajl tagħna biex tqiegħed l-affarijiet. Din il-kwistjoni jista 'ma jkollhomx jagħmel sens, imma naħseb li twieġeb li hija se tgħin. STUDENT 82: Oħloq firxa? JASON Hirschhorn: Mela ejja jaħsbu ta 'kull fajl bħala filliera. Ejja jaħsbu f'termini ta 'ringieli. Jekk għandna l-ewwel ringiela tagħna mill-żgħar tagħna stampa, nistgħu nagħmlu dan ringiela fis ringiela kbir minn stampa kbira, u mbagħad tiġi replikata li ringiela madankollu ħafna drabi jeħtieġ li jiġi replikat, minflok pixel jmorru mill pixel, li gets konfuża meta jittrattaw ma 'fajls. Għaliex jekk kellna - Niġri barra ta 'spazju. Jekk dan huwa fajl tagħna, u għandna li pixel wieħed hemm, u rridu li tqiegħed lilha hemm dritt, aħna xorta għandhom xi affarijiet li jeħtieġ li jmorru fuq hemm meta nkunu kitba u l-ħolqien fajl ġdid tagħna - fajl tagħna dan huwa darbtejn akbar. Imma huwa verament diffiċli b'funzjonijiet fajl skip madwar għal linji ġodda bħal dik, u mbagħad mur lura hawn u l-affarijiet fil hemmhekk. Huwa kważi impossibbli li tagħmel xi ħaġa bħal dik, jekk dan jagħmel sens. Mela jekk naħsbu f'termini ta 'ringieli, nistgħu tieħu ringiela tagħna, u mbagħad titqiegħed - jirreplika ringieli vertikalment. U li kif nittrattaw resizing vertikalment milli orizzontalment. Dan kien it-tip ta 'malajr, u ftit konfuża. Sfortunatament ħin tagħna huwa up. I se toqgħod barra għal dawk tal inti hawn li xi mistoqsijiet dwar l- sett problema, inklużi jirkupraw. Mela ejja taġġorna għal issa. U għal darb'oħra, jekk għandek xi mistoqsijiet, nistgħu chat barra.