[Daqq tal-mużika] ZAMYLA Chan: Ejja tindirizza jirkupraw. Jirkupraw huwa probabbilment PSET favorit tiegħi, u prinċipalment għaliex naħseb li huwa tassew, tassew jibred. Bażikament, int tingħata memorja fajl card li fih stampi ġew imħassra. Imma dak li int ser tagħmel huwa jirkupraw lilhom kollha. OK. Allura huwa verament eċċitanti, imma forsi ftit intimidanti, għax int mogħtija fajl C vojta u inti għandek timla pulzieri OK, so ejja jiksru dan f'partijiet maniġġabbli. Int ser ikollok tixtieq li tiftaħ il- fajl karta tal-memorja. Dan jidher sempliċi biżżejjed. Imbagħad, issib il-bidu ta 'immaġni JPG. Il-fajls kollha dwar dan il-memorja karta ser ikunu jpgs. Imbagħad, ladarba inti ssib il-bidu, int ser tiftaħ JPG ġdida, li huwa, bħal, joħolqu JPG, u jiktbu 512 byte fi żmien sakemm JPG ġdida hija misjuba, u jispiċċa l-programm, ladarba inti tiskopri l-aħħar tal-fajl. Allura l-ewwel passi ewwel huwa li tiftaħ il-fajl karta tal-memorja. Imma inti taf dan diġà, u hemm fajl funzjoni I / O li għaddej biex jkunu utli ħafna. OK. Allura x'inhuma jpgs? Għaliex għandna bżonn għall-bidu dan. Well, jpgs, bħad mapep bit, huma biss sekwenzi ta 'bytes. Fortunatament, kull JPG jibda ma 'jew 0xff, 0xd8, 0xff, 0xe0, sekwenza waħda ta 'bytes, jew ieħor sekwenza ta 'bytes. Allura dawn l-erba 'bytes jindikaw il-bidu ta 'JPG. Xejn għajr dawk iż-żewġ kombinazzjonijiet ta 'erba' bytes. U fortunatament għalina, ieħor fatt li aħna jistgħu jieħdu vantaġġ minnu huwa li kull JPG huwa maħżun ġenb ma 'ġenb fuq il-karta tal-memorja. Stajt rappreżentati l-istruttura ta ' karta tal-memorja skematikament fuq dan slide hawnhekk. Hawnhekk, kull kwadru, kull rettangolu, jirrappreżenta 512 bytes, u jibda ma 'griż li aħna ma verament ikollhom JPG. Imma allura aħna finalment hit blokk bi stilla. Dan ifisser li l-ewwel erba 'bytes barra ta 'dawk 512 wieħed minn dawk iż-żewġ jibdew sekwenzi ta 'JPG. U aħna jmorru minn hemm, u mbagħad darba JPG wieħed jispiċċa, jibda dak li jmiss. Aħna qatt ma jkollhom kwalunkwe aktar ispazju griż fil-bejn. Imma kif nistgħu fil-fatt taqra dan, u aqra l-512 bytes sabiex inkunu jistgħu jagħmlu il-paragun l-ewwel post? Well, ejja mur lura għall fread, li jieħu fil-Struct li se jkun fiha l-bytes li int qari. Allura int ser tpoġġi dawk fil hemm - id-daqs, in-numru, u mbagħad inpointer li inti qed taqra minn. Issa, irridu li jaqra 512 fi żmien, u irridu li jaħżen dan fil-buffer, Jien ser sejħa tiegħu. Bażikament, aħna qed tmur biex iżommu fuq dawk il-512 bytes u ma affarijiet magħha, right? Aħna qed kemm ser iqabblu l-ewwel erba 'bytes, jew aħna qed tmur biex taqraha fi, OK? Mela allura l-pointer data se mbagħad jservi bħala buffer tiegħek, u l- inpointer, ukoll, li jinsab biss jmorru li tkun karta tal-memorja tiegħek. Lura għall skematika tagħna karta tal-memorja. Aħna qed tmur biex taqra 512 bytes fi żmien, ħażna kull blokk 512-byte ġo buffer, azjenda fuq dawk buffer, dawk 512 bytes, sakemm nafu eżattament x'għandhom jagħmlu magħhom. Allura l-bidu ma jkunx xejn, hekk aħna ser taqra l-buffer, din titqabbel, u aħna mhux se bżonn li tagħmel xejn magħha. U mbagħad, aħna finalment hit stilla blokk, li jfisser li konna misjuba ewwel JPG tagħna. Allura l-buffer issa għandhom bytes minn dak JPG. Il-ħin li jmiss 512 bytes, għaliex qed ma blokk stilla, huma wkoll parti minn dik JPG. U jpgs huma kontinwi minn hemm fuq in, sakemm aħna laqat il JPG jmiss. U allura l-buffer mbagħad istivi 512 bytes għal dak JPG, u bqija, u ibqa 'sejjer hekk. OK. Allura ladarba inti hit l-ewwel starred blokk, l-ewwel JPG, kif taħseb li attwalment, ukoll, tiftaħ it? Ejja jagħmlu JPG ġdid. Il filenames għal JPG ser tkun fil-format, numru, numru, number.jpg, b'mod li dawn qed jismu fl l-ordni li fih ikunu jinstabu, jibdew minn 0. Allura l-ewwel JPG li inti ssib ser jiġu 000.jpg. Allura, probabbilment idea tajba li jżomm track ta 'kemm jpgs inti stajt sabet s'issa. Allura dak hu l-isem ta 'fajl. Imma kif inti fil-fatt tagħmel dan? Well, aħna qed tmur biex tuża funzjoni msejħa sprintf. A ftit simili għal printf, fejn inti tista 'tuża placeholders għal kordi, ħlief fil-każ preżenti, sprintf se print il-fajl out għal ġol-kurrent direttorju, mhux fil-terminal. OK. Allura hawn naraw li għandna titolu, firxa char li ser taħżen l- string riżultanti, u aħna jgħaddu fil- titolu tas-sekwenza attwali bil- placeholder, bħad konna tgħallmu li tagħmel ma printf. Iżda dan il-kodiċi li għandi hawn se tagħti 2.jpg, mhux 002.jpg. So I ser tħalli lilek biex issir taf kif timmodifika l-placeholder li jagħmlu l- isem korrett. OK. Allura ladarba inti stajt sprintf'd allura inti tista ' tiftaħ dan il-fajl, minħabba li teżisti direttorju tiegħek, ma fopen, bl-użu titolu, u mbagħad kull sura trid li tiftaħ dan il-fajl pulzieri Allura issa li aħna ħadthom fetħet fajl JPG ġdid, issa nistgħu jikteb 512 bytes fi time, sakemm tinstab JPG ġdid. Mela ejja tagħti ħarsa ieħor fil-sintassi ta fwrite. Naf li jien turi dan slide a ħafna, iżda I biss jixtiequ jagħmlu ċert li inti guys ma jsibux wisq konfuż, għaliex Naf li huwa faċli ħafna li ħallat l-ewwel u l-aħħar argument, b'mod partikolari. Imma ftakar li int bil-miktub mill- buffer fil-immaġini fajl out tiegħek. Issa li taf kif il-write 512 bytes fil-fajl JPG tiegħek li inti ħadthom maħluqa, ukoll, aħna tixtieq li twaqqaf dik proċess ladarba aħna ħadthom laħqu t-tmiem ta ' karta tagħna, għax mhux se jkun hemm xi ritratti aktar biex jinstabu. Mela ejja mmorru lura għall fread darba aktar, I wegħda. fread prospetti kif ħafna oġġetti ta 'daqs, daqs, kienu lesti fl b'suċċess. Idealment, dan se jkun x'ikun inti tgħaddi fl għal numru, id-dritt? Għax int tipprova taqra numru ta 'elementi ta' daqs, id-daqs. Imma jekk fread mhux kapaċi taqra li numru ta 'elementi, allura dan ser jirritorna kwalunkwe numru jinqara b'suċċess. Issa, ħaġa waħda importanti li wieħed jinnota huwa li jekk tuża fajl ieħor I / O funzjoni bħal fgetc, dan ser jerġa 'lura wkoll oġġetti kemm jinqara b'suċċess. X'hemm utli dwar din il-funzjoni huwa li jekk inti tuża l-funzjonijiet ġewwa ta ' kundizzjoni, dan ser tesegwixxi innifsu waqt tiddetermina dik il-kundizzjoni, li hija biss verament utli. Mela jekk għandek dan kondizzjonijiet, ngħidu aħna, jekk buffer fread, DOG sizeof, 2, pointer, ugwali daqs 1, li ifisser li nixtieq li taqra 2 klieb fil-ħin. Imma jekk fread prospetti 1 minflok 2 bħala mistenni, dan ifisser li hemm 2 klieb xellug fil-fajl tiegħi, iżda pjuttost 1. Iżda jekk dan jirritorna 2, imbagħad I għad għandhom dawk 2 klieb ġewwa ta 'buffer tiegħi. Allura issa li jagħtik sens ta 'kif jikkontrolla l-aħħar tal-fajl, iżda ejja jgħaddu issa l-loġika. Kif nistgħu attwalment biċċa kollha ta 'dawn l-elementi flimkien? Ladarba aħna hit ewwel JPG tagħna, minn nafu li jpgs huma maħżuna contiguously, aħna ser tkun bil-miktub sakemm aħna jilħqu t-tmiem tal-fajl biljett. Iżda aħna ma jridu jiktbu xejn sa dakinhar. Għalhekk huwa importanti, mhux biss li aħna qed fuq il-bidu ta 'JPG ġdida, iżda jekk aħna stajt diġà sabet JPG jew le. Jekk Hu l-bidu ta 'JPG ġdid, aħna ser tixtieq li tagħlaq tagħna fajl JPG attwali jekk aħna għandna waħda miftuħa, u miftuħ waħda ġdida li tikteb fis. Jekk mhuwiex il-bidu tal-JPG ġdid, għalkemm, aħna ser iżommu l-istess fajl JPG tiftaħ u jiktbu f'dak. Aħna ser jiktbu buffer tagħna fis liema Fajl JPG għandna miftuħa, sakemm aħna għandna waħda miftuħa, tal-kors. Jekk aħna ma sabu ewwel JPG tagħna għadhom, aħna ma jiktbu xejn. U dan il-proċess ikompli sakemm inti jilħqu t-tmiem tal-fajl biljett. U fl-aħħarnett, inneħħu inti tixtieq li tagħmel ċert li inti fclose kwalunkwe fajls li inti stajt fopened. Ladarba int komdu mal- kunċetti, tagħti ħarsa lejn uħud pseudocode, li stajt inklużi hawn. L-ewwel, inti tixtieq li tiftaħ il-fajl biljett, u mbagħad irrepeti l-proċess ta 'wara sakemm inti stajt laħqu l- tmiem tal-biljett. Inti tixtieq li taqra 512 bytes fi buffer. Bl-użu li buffer, tixtieq tkun taf biex jiċċekkjaw jekk int fil-bidu ta ' JPG ġdid jew le. U ir-risposta għal din id-domanda se jaffettwawx l-amministrazzjoni fajl tiegħek - li fajls li inti tiftaħ, li dawk do inti qrib. Imbagħad, usted diġa 'sabu JPG? Kif inti kienu ġew żamma track ta 'li? Imbagħad, jiddependi fuq li, inti ser jew jikteb fil-JPG attwali li inti ikollhom miftuħa, jew ma jiktbu fil-livelli kollha, għaliex inti ma sabu JPG s'issa. Finalment, ladarba inti stajt laħqu t-tmiem ta ' il-fajl, tixtieq tkun taf biex jagħlqu kwalunkwe fajls li inti għandek miftuħa fadal. Irridu nkunu puliti hawn. U ma 'dan, inti stajt rkuprati kollha il-fajls neqsin minn dak tal-memorja karta, li huwa proeza pretty aqwa. Allura pat lilek innifsek fuq id-dahar. Iżda, hemm wieħed element aktar l PSET, li hija l-konkors. Inti ser issib li kollha ta 'l-istampi li ħadthom rkuprati huma attwalment stampi ta 'staff CS50'S. Mela jekk int fuq il-kampus jew x'imkien qarib, allura inti tista 'tieħu stampi ma il-persunal, u s-sezzjoni li għandha l- aktar stampi ma membri tal-persunal mill-fajls irkuprati tagħhom se tikseb premju tal-biża. Ma 'dan, allura inti ħadthom lest l jirkupraw PSET. Jisimni Zamyla, u dan huwa CS50.