>> [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.