>> [Musiikki soi]
>> ZAMYLA Chan: Katsotaanpa puuttua takaisin.
Recover on luultavasti suosikkini PSET, ja lähinnä koska mielestäni se on
todella, todella siistiä.
Periaatteessa olet antanut muisti kortisto, jossa
kuvat on poistettu.
Mutta mitä aiot tehdä, on palauttaa ne kaikki.
>> OK.
Joten se on todella jännittävää, mutta ehkä vähän uhkaava, koska olet
annetaan tyhjä C-tiedosto ja sinun täytyy täyttää sen sisään
OK, joten katsotaanpa rikkoa tätä hallittaviin osiin.
Sinun kannattaa avata muistikortti tiedostojen.
Tämä vaikuttaa helpolta.
Sitten löytää alku JPG-kuvan.
Kaikki tiedostot tämä muisti kortti aiotaan JPGs.
Sitten, kun löydät alussa, aiot avata uuden JPG, että
on, kuten, luoda JPG, ja kirjoittaa 512 tavu kerrallaan, kunnes uusi JPG on
löytyi, ja päättyy ohjelman kerran havaitset tiedoston loppuun.
>> Joten ensimmäiset askeleet ensin on avata muistikortti tiedostojen.
Mutta te tiedätte tämän jo, ja siellä on tiedoston I / O-toiminto, joka tulee
osoittautua erittäin hyödyllistä.
OK.
Joten mitä ovat JPGs?
Koska meidän on alussa se.
No, JPGs, kuten vähän karttoja, ovat vain sekvenssit tavua.
Onneksi jokainen JPG alkaa joko 0xff, 0xd8, 0xFF, 0XE0, yksi sekvenssi
tavujen tai muun sarja tavuja.
>> Joten ne neljä tavua ilmaisevat alku JPG.
Ei ole muita kuin nämä kaksi yhdistelmät neljä tavua.
Ja onneksi meille, toinen tosiasia, että me voi hyödyntää on, että jokainen
JPG on tallennettu side-by-side muistikortilla.
Olen edusti rakenne muistikortti kaavamaisesti tästä
dia täällä.
Täällä jokainen neliö, joka suorakulmion, edustaa 512 tavua, ja se alkaa
harmaa, että emme todella on JPG.
>> Mutta sitten vihdoin osui lohko, jossa on tähti.
Tämä tarkoittaa, että neljä ensimmäistä tavua ulos näistä 512 on yksi niistä kahdesta
alkaen sekvenssit JPG.
Ja me mennä sieltä, ja sitten kerran yksi JPG päättyy, seuraava alkaa.
Meillä ei koskaan ole enempää harmaa tilaa siltä väliltä.
>> Mutta miten voimme todella lukea tätä, ja Lue 512 tavua, jotta voimme tehdä
Vertailun ensimmäinen paikka?
No, mennään takaisin fread, joka vie struct, joka sisältää
tavua, että luet.
Joten aiot laittaa niitä siellä -
koko, lukumäärä, ja sitten inpointer että luet alkaen.
Nyt haluamme lukea 512 kerrallaan, ja haluamme säilyttää tämän puskurissa,
Aion kutsua sitä.
>> Periaatteessa aiomme pitää asemia 512 tavua ja tehdä
asioita sen kanssa, eikö?
Me joko menossa verrata ensin neljä tavua tai aiomme
lukea se, OK?
Joten sitten datan osoitin sitten toimii teidän puskuri, ja
inpointer, hyvin, että on juuri menossa olla muistikortille.
>> Takaisin meidän muistikortille kaavamainen.
Aiomme lukea 512 tavua kerrallaan, tallentamiseen jokaisen 512 tavun lohko
puskuriin, pitää kiinni ne, puskuri, nämä 512 tavua, ennen kuin tiedämme
mitä tehdä niille.
Joten alussa ei ole mitään, niin me lukea puskuri, verrata sitä, ja
meidän ei tarvitse tehdä mitään sen kanssa.
Ja sitten vihdoin osui tähti lohko, mikä tarkoittaa, että olemme
löytyi ensimmäinen JPG.
Joten puskuri nyt pitää tavuja että JPG.
>> Seuraavan kerran 512 tavua, koska he ei tähti lohko, ovat myös
osa tätä JPG.
Ja JPGs ovat jatkuvia sieltä sisään, kunnes osuimme ensi JPG.
Ja sitten puskuri sitten omistaa 512 tavua, joka JPG, ja
niin edelleen, ja niin edelleen.
OK.
>> Joten kun osut ensin tähdillä palkittu lohko, ensin JPG, miten te
todella hyvin, avaa se?
Tehdään uusi JPG.
Tiedostonimiä JPG menossa oltava muodossa, numero, lukumäärä,
number.jpg, että he nimetty siinä järjestyksessä, jossa ne esiintyvät,
alkaen 0.
>> Joten ensimmäinen JPG, että olet löytää tullaan 000.jpg.
Joten, luultavasti hyvä idea seurata kuinka monta JPGs olet löytänyt tähän mennessä.
Niin, että tiedoston nimi.
Mutta miten voit itse tehdä, että?
No, me aiomme käyttää toiminto nimeltään sprintf.
Hieman samanlainen printf, jossa voit käyttää paikanpitäjinä jouset,
paitsi että tässä tapauksessa sprintf tulostaa tiedoston ulos nykyisestä
hakemistoon, ei terminaaliin.
>> OK.
Joten tässä me näemme, että meillä on otsikko, char array, joka tallentaa
tuloksena merkkijono, ja me kulkea otsikko todellinen merkkijonon
paikanvaraajassa aivan kuten olemme oppinut tekemistä printf.
Mutta tämä koodi, joka minulla on täällä antaa 2.jpg, ei 002.jpg.
Joten Jätän voit selvittää, miten muokata paikkamerkki tehdä
oikea nimi.
>> OK.
Joten kun olet sprintf'd sitten voit avaa tiedoston, koska se on olemassa
hakemistoon, jossa fopen käyttäen otsikko, ja sitten mitä haluamasi tila
avata tiedoston sisään
Joten nyt olemme avannut uuden JPG-tiedosto, Nyt voimme kirjoittaa 512 tavua
aikaa, kunnes uusi JPG löytyy.
Joten katsotaanpa katsomaan uudelleen klo syntaksi fwrite.
>> Tiedän, että näytän tämän dian paljon, mutta haluan vain varmistaa, että
te älä mene liian sekava, koska Tiedän, että se on erittäin helppo
sekoittaa ensimmäinen ja viimeinen argumentti, erityisesti.
Mutta muista, että olet kirjallisesti teidän puskuri pois tiedostojen näkymiä.
>> Nyt kun tiedät miten kirjoittaa 512 tavut omalle JPG-tiedosto, joka olet
luotu, hyvin, haluamme lopettaa että prosessia, kun olemme saavuttaneet lopussa
Meidän kortti, koska siellä ei ole enempää kuvia löytyy.
Joten mennään takaisin fread kerran, lupaan.
fread palauttaa kuinka monta kohdetta koosta, koko, valmistuivat onnistuneesti.
Ihannetapauksessa tämä tulee olemaan mitä tahansa ohitat numeron, eikö?
Koska yrität lukea numeron elementtien koon, kokoa.
Mutta jos fread ei voi lukea, että alkioiden lukumäärä, niin se tulee palauttaa
mitä numero se lukenut onnistuneesti.
>> Nyt yksi tärkeä asia huomata on että jos käytät toisen tiedoston I / O
toimivat kuten fgetc, se tulee myös palata kuinka monta kohdetta se lukea onnistuneesti.
Mitä hyötyä tästä toiminnosta on että jos käytät toimintoja sisällä
kunnossa, se tulee suorittaa itse taas määritetään, että ehto, joka on
vain todella hyödyllinen.
Joten jos sinulla on tämä olosuhteissa, vaikkapa jos fread puskuri, sizeof koira, 2,
osoitin, vastaa on 1, että tarkoittaa sitä, että haluaisin lukea
2 koiraa tuolloin.
Mutta jos fread palauttaa 1 eikä 2 kuten odotettavissa, se tarkoittaa, että on olemassa 2
koirat jäljellä tiedostoni, vaan 1.
Mutta jos se palaa 2, niin minulla on vielä nämä 2 koiraa sisällä minun puskuria.
>> Joten nyt joka antaa sinulle tunteen, miten Tarkista tiedoston loppuun, mutta
mennään läpi nyt logiikkaa.
Miten me oikeastaan ​​pala kaikki nämä yhdessä?
Kun me iski ensimmäisen JPG, sillä Tiedämme, että JPGs on tallennettu
contiguously, me voidaan kirjallisesti ennen pääsemme loppuun kortisto.
Mutta emme halua kirjoittaa mitään siihen saakka.
Joten sillä on merkitystä, ei vain, että me olemme aloitettiin uusi JPG, mutta onko
olemme jo löytäneet JPG vai ei.
>> Jos se on alku uuden JPG käymme haluat sulkea nykyisen JPG-tiedosto, jos
meillä on yksi avoin, ja avoin uusi kirjoittaa osaksi.
Jos se ei ole aloittaa uuden JPG, vaikka, me jatkamme samaa JPG-tiedosto
avata ja kirjoittaa siihen.
Me kirjoitamme puskuri kumpi JPG-tiedosto meillä on käytettävissä, edellyttäen että
meillä on yksi avoin, tietenkin.
Jos emme ole löytäneet meidän ensimmäinen JPG vielä, emme kirjoita mitään.
Ja tämä prosessi jatkuu, kunnes päähän kortisto.
>> Ja lopuksi, sinun kannattaa tehdä Varmista, että olet FSulje mitään
tiedostot, jotka olet fopened.
Kun olet tyytyväinen käsitteitä, katsomaan joitakin
pseudokoodina, jonka olen mukana tässä.
Ensin kannattaa avata kortisto, ja toista sitten seuraava prosessi
kunnes olet saavuttanut kortin päähän.
Haluat lukea 512 tavua puskuriin.
Käyttämällä että puskuri, sinun kannattaa tarkistaa olitpa alussa
uusi JPG vai ei.
Ja vastaus tähän kysymykseen vaikuttaa tiedostojen hallinta -
mitkä tiedostot avaat, joka niistä suljet.
>> Sitten, oletko jo löytänyt JPG?
Miten olet ollut pitää seurata, että?
Sitten, riippuen siitä, että sinun on joko kirjoittaa nykyiseen JPG, että olet
on avoin tai ei kirjoita sitä ollenkaan, koska et ole löytänyt JPG vielä.
Lopuksi, kun olet saavuttanut loppuun tiedoston, sinun kannattaa sulkea
Jäljellä tiedostoja, sinulla on auki.
Haluamme olla siisti täällä.
>> Ja että, olet toipunut kaikki puuttuvia tiedostoja että muisti
kortti, joka on melko uskomatonta feat.
Joten taputtaa itseäsi selkään.
Mutta, vielä yksi tekijä PSET, joka on kilpailu.
Tulet huomaamaan, että kaikki kuvat että olet toipunut todella
kuvia CS50: n henkilöstöä.
Joten jos olet oppilaitoksen tai jonnekin lähellä, niin voit ottaa kuvia
henkilökunta ja osa, joka on useimmat kuvat toimihenkilön
niiden Palautetut tiedostot saada mahtava palkinto.
Kanssa, että niin olet valmis takaisin PSET.
Nimeni on Zamyla, ja tämä on CS50.