[Musika jotzen] ZAMYLA Chan: Dezagun aurre berreskuratzeko. Berreskuratzeko nire pset gogokoena da ziurrenik, eta batez ere, uste dut, da delako benetan, benetan cool. Funtsean, memoria bat eman zu txartela fitxategia zein irudiak ezabatu dira. Baina zer ari zaren joan egin da horiek guztiak berreskuratzeko. Ados. Beraz, benetan zirraragarria da, baina agian bat Apur beldurra, Oraindik delako baten C fitxategia hutsik eta eman bete sartu behar duzu Ados, beraz dezagun apurtu hau Lasén zatitan. Ireki nahi duzu memoria-txartela fitxategia. Badirudi simple nahikoa. Ondoren, aurkituko hasieran JPG irudi bat. Memoria honetako fitxategi guztiak txartel daude JPGs izango. Ondoren, behin hasieran aurkituko duzu, JPG berri bat irekitzen joan zaren, horrek da, bezala, sortu JPG bat, eta idatzi 512 aldi JPG berri bat da arte at byte aurkitu, eta programa amaitzeko, behin lerro amaierara atzeman duzu. Beraz, lehen urratsak lehenengoa da ireki memoria-txartela fitxategia. Baina hau ezagutzen duzu dagoeneko, eta ez dago hori joan fitxategia / irteerako funtzio bat Oso baliagarria. Ados. Beraz, zer dira JPGs? Hasierara behar dugulako. Beno, JPGs, besterik ez bit mapak bezala, byte sekuentziak besterik ez dira. Zorionez, JPG behin bai batekin hasten 0xFF, 0xd8, 0xFF, 0xe0, sekuentzia bat byte, edo beste byte-sekuentzia. Beraz, lau byte horiek adierazteko JPG baten hasiera. Inor bi konbinazioak direnak besterik lau byte. Eta zorionez guretzat, hain zuzen, beste bat dugula abantaila hartu ahal izango da, behin JPG gordetzen den albo-alboko memoria txartelean. Baten egitura irudikatzen dut Memoria txartel eskematikoki honetan irristatu hemen. Hemen, karratu bakoitzean, laukizuzen behin, 512 byte adierazten du, eta bertan hasten da horretan grisa ez dugu honekin JPG bat benetan izan. Baina, ondoren, azkenik hit dugu Izar batekin bloke bat. Horrek esan nahi du lehen lau byte itzazu horietako 512 bi horietako bat dira JPG bat sekuentziak hasita. Eta hortik joan ginen, eta, ondoren, behin JPG bat amaitzen da, hurrengo bat hasten da. Ez inoiz ez dugu edozein gehiago -arteko espazioa grisa. Baina, nola egin benetan irakurri dugu hau, eta irakurri 512 byte horrela egin ahal izango dugu konparazioa lehenik? Beno, goazen fread atzera, eta horrek struct izango diren eduki hartzen byte hori irakurtzen ari zaren. Beraz zu jarri joan bertan daudenen - tamaina, kopurua, eta, ondoren inpointer etik duzula irakurtzen ari. Orain, 512 irakurtzeko denbora bat nahi dugu, eta hau gordetzeko buffer batean nahi dugu, Deitu noa. Funtsean, eduki goaz 512 byte horiek kalera eta egin berarekin gauzak, ezta? Bai ari gara lehen konparatzeko joan lau byte, edo goaz irakurri dugu beraz, OK? Beraz, ondoren datuen erakuslea izango da, ondoren, Zure buffer gisa balioko du, eta, inpointer, ondo, hori besterik ez da joan Memoria txarteleko izan. Gure memoria txartela eskematiko itzuli. 512 byte irakurri aldi berean goaz, 512 byteko bloke bakoitzean gordetzeko buffer batean, eskuan kalera horiek bufferrerako, 512 byte horiek, dakigu arte zehazki zer egin behar den. Beraz, hasieran ez da ezer, beraz, buffer irakurri dugu, konparatu, eta ez dugu ezer egin behar berarekin. Eta, ondoren, hit azkenik dugu izar bat blokeatu, ditudan dugu zentzua gure lehen JPG aurkitu. Beraz bufferraren orain eutsi JPG hartatik bytes. Hurrengo aldian izango dute Oraindik 512 byte, zeren Ez izar bloke bat, ez dira ere JPG horren zati. Eta JPGs hortik jarraiak dira on, in hurrengo JPG hit arte. Eta gero bufferraren orduan dauka 512 byte JPG horretarako, eta abar, eta abar. Ados. Beraz, behin lehen izardun hit duzu blokea, lehen JPG, nola egiten duzu egia esan, ondo, zabalduko da? Egin dezagun JPG berria. JPG bat fitxategi-izenak ez dira joan formatua izan, zenbakia, zenbakia, number.jpg, horretan ari dira izendatzen ordena zein ere aurkitu dira, 0 hasita. Beraz, lehen JPG duzula aurkituko 000.jpg egingo da. Beraz, ziurrenik ideia ona segimendua egiteko Nik, orain arte, zenbat JPGs aurkitu duzu. Beraz, fitxategi-izena da. Baina nola ez benetan egin duzula? Beno, erabili goaz bat sprintf izeneko funtzioa. Printf antzeko pixka bat, non leku-markak erabil ditzakezu kateak, kasu honetan ordea, egingo inprimatu sprintf fitxategian daudelarik egungo sartu gida, ez terminalean sartu. Ados. Beraz, hemen izenburu dugula ikusiko dugu, char array bat egingo gordetzeko emaitzak katea, eta pasatzen dugu batekin benetako katearen izenburua leku-marka, besterik gustatzen dugu ikasi nahi printf egin. Baina kode hori hemen daukat 2.jpg, ez 002.jpg emango. Beraz, zuk nahi dut utzi jakiteko nola leku-marka aldatzeko egin du izen zuzena. Ados. Beraz, behin, ondoren sprintf'd duzun ahal duzun ireki fitxategia dela, existitzen delako zure gida, fopen batera, erabiliz izenburua, eta, ondoren, nahi duzuna modua fitxategi hori irekitzeko sartu Beraz, orain dela JPG fitxategi berri bat ireki dugu, orain 512 byte idatzi ahal izango dugu batean denbora, JPG berri bat aurkitu arte. Beraz, dezagun beste begirada fwrite sintaxia at. Duten diapositiba bat hau erakutsiz naiz ezagutzen dut asko, baina, besterik gabe, nahi dut ziur you guys ez naiz gehiegi nahasi, zeren Badakit oso erraza dela nahastu lehena eta azkena argumentua, bereziki. Baina gogoratu zarela idazten Zure bufferraren daudelarik fitxategia irudiak sartu. Orain badakiela nola idazteko 512 Zure JPG fitxategia zuk dudan dituzten sartu bytes sortu, bai, hori gelditu nahi dugu prozesua behin bukaerara iritsi gara gure txartela, egongo ez delako izan aurki daitezke irudi gehiago edozein. Beraz, goazen atzera fread izateko beste behin ere, agintzen dut. fread tamaina elementuak zenbat itzultzen, tamaina, arrakastaz prest ziren. Haien, hau izango da, edozein dela ere pasatzen duzu kopurua, ezta? Zenbakia irakurri saiatzen ari zaren delako tamaina, tamaina elementuak. Baina fread ez dela irakurri ahal bada elementu kopurua, gero itzultzeko izango da edozein dela ere zenbakia arrakastaz hura irakurtzeko. Orain, kontuan izan datu garrantzitsu bat duen beste fitxategi bat S / I erabiltzen baduzu fgetc bezalako funtzio, ere izango da itzultzeko zenbat gauza behar bezala irakurri. Zer da funtzio honi buruz erabilgarria da duen baten barruan funtzioak erabiltzen baduzu baldintza, bera exekutatu izango da berriz baldintza hori, eta hori da erabakigarria besterik gabe, benetan erabilgarria. Beraz, baldintza hau baldin baduzu, esan, bada fread buffer, sizeof DOG, 2, erakuslea, berdin berdin 1, hori esan nahi du, irakurtzeko nahiko nuke 2 txakurrak garai hartan. Baina fread 1 ematen balitz bezala 2tik ordez Espero zen, horrek esan nahi du ez direla 2 txakurrak nire fitxategia utzi, baizik eta 1. Baina 2 itzultzen bada, orduan oraindik I nire buffer barruan 2 txakur horiek. Beraz, gaur egun nola zentzu bat ematen dizu fitxategia amaieran egiaztatu, baina goazen orain logikaren bidez. Nola ez benetan pieza dugu guztiak elementu horiek elkarrekin? Behin gure lehen JPG hit dugu, geroztik badakigu JPGs horretan gordetzen dira contiguously egingo dugu idazten, arte txartel lerro amaierara iritsiko gara. Baina ez dugu idatzi nahi ezer ordura arte. Beraz, garrantzitsua da ez bakarrik dugun Oraindik at JPG berri baten hasiera, baina ala Jadanik JPG edo ez dugu aurkitu. JPG berri baten hasiera da, bada, egingo dugu gure egungo JPG fitxategia bada itxi nahi open bat, eta irekia dugu berri bat sartu idazten. Ez da JPG berria hasi bada, nahiz eta, JPG fitxategi berean jarraituko dugu ireki eta horretan idazten. Gure buffer idatziko dugu edozein sartu JPG fitxategia ireki dugu, emandako open bat dugu, jakina. Dugu ez bada aurkitzen gure lehen JPG oraindik, ez dugu ezer idatzi. Eta prozesu hau arte jarraitzen txartel lerro amaierara iristeko. Eta, azkenik, nahi egin dituzu Ziurtatu edozein fclose duzula duten fopened dituzun fitxategiak. Behin Oraindik eroso kontzeptuak, hartu batzuk begirada bat pseudocode, hemen sartzen dut. Lehenengo, txartela fitxategia ireki nahi duzun, eta, ondoren, honako prozesua errepikatu duzun iritsi arte txartelaren amaieran. 512 byte irakurri nahi duzun buffer batean. Buffer hori erabiliz, begiratu nahi duzu Oraindik ala baten hasieran JPG berriak edo ez. Eta galdera horri erantzuna izango eraginik zure fitxategi-kudeaketa - irekitzen dituzun fitxategiak, eta horrek direnak daukazu itxi. Ondoren, jadanik aurkitu duzu JPG bat? Nola mantentzen dira duzun horren arrastoa? Gero, horren arabera, bai dituzu egungo JPG sartu idatzi duzula irekita, edo ez idatzi batere izan, ez duzu JPG Oraindik aurkitu ez duelako. Azkenik, behin bukaerara iritsi zara fitxategia, edozein itxi nahi duzu dituzun irekita fitxategiak geratzen. Txukuna izan nahi dugu hemen. Eta hori, guztia berreskuratu dituzun falta diren fitxategiak memoria horretatik aurrera txartelak, balentria nahiko harrigarria da. Beraz Pat zaitez atzeko aldean. Baina, ez dago elementu bat gehiago da pset, hau lehiaketa da. Aurkituko dituzu: irudi guztien berreskuratu duzula, egia esan, CS50 langileen pictures. Beraz Oraindik campus edo nonbait bada gertu, eta gero irudiak hartu ahal izango duzu langileek, eta atala duela taldekideak pictures gehienetan Beren berreskuratutako fitxategiak izango awesome sari bat lortzeko. Horrekin, ondoren dituzun amaitu berreskuratu pset. Nire izena Zamyla da, eta hau da CS50.