Hizlaria: Orain arte, litekeena da Zure programak gehienak dute pixka bat iragankorrak dira. Mario edo Greedy bezalako programa bat exekutatu. Zerbait egiten du, agian eskatuko Informazio batzuk erabiltzaileari, irteera batzuk inprima pantailara, baina, ondoren, zure programa da denean baino, ez da benetan frogak ez dago inoiz lehenik eta behin exekutatu zuten. Esan nahi dut, ziur, utzi izana ireki terminal leihoa da, baina zure pantaila garbitzeko baduzu, ez da benetan frogak ez da existitzen. Ez dugu gordetzeko bitarteko dute iraunkorrak informazioa, informazio gure ondoren badago programa gelditu exekutatzen, edo ez dugun puntu honetan. Zorionez, nahiz eta, c egiten ematen digu gaitasuna hori egin ahal izateko martxan jarriz Zerbait izeneko fitxategi bat, egitura bat funtsean hori bikoiztu egingo zenuke fitxategi bat adierazten klik zure ordenagailuan, bazaude erabiltzaileari ingurune grafikoa erabil. Oro har, lan egiten denean c batera, benetan gara izango dira lanean joan erakusleak fitxategia files-- den stars-- Pixka bat izan ezik denean pare bat buruz hitz egiten dugu funtzio duten fitxategia erakusleak lan. Zuk ez duzu benetan zulatu dute gehiegi sakon erakusleak ulermena sartu beraiek. Ez da, teeny pixka Bertan izango haiei buruz hitz egiten dugunean, baina, oro har, artxibatzen erakusleak eta erakusleak, elkarri lotuta, berriz, ez dira gauza bera. Orain zer ari naiz Datu iraunkorrak diot? Zer da datu-iraunkorrak? Zergatik arduratzen gara? Esan, adibidez, programa bat exekutatzen ari zara edo berridatzi duzun bat programa hori joko bat da, eta segimendua nahi duzu erabiltzailearen Mugimendu guztiak beraz, zerbait oker dagoela, agian, bada, Jokoaren ondoren espedientea aztertu ahal izango duzu. Horixe esan nahi dugunean Datu iraunkorrak buruz hitz egiteko. Korrika ikastaro batean zure programa, fitxategi bat sortuko da. Eta zure programa denean gelditu exekutatzen, fitxategi hori oraindik zure sisteman lehendik. Eta hori begiratu ahal izango dugu eta aztertu. Eta beraz, programa hori ezarri litzateke Datu iraunkor batzuk sortu dute, Datu programaren ondoren existitzen ditu martxan amaitu. Orain lan egiten duten funtzio horiek guztiak fitxategiak sortu eta manipulatzeko hainbat modutan horiek io.h estandarra bizi, bertan Goiburu-fitxategi bat dela Litekeena duzun kiloko egon Nahiko goialdean barne Askoz zure programak bat zeudelako guretzat funtzio erabilgarria gehienetan, printf, hori ere uzten io.h. bizi da Beraz, ez duzu behar, besteak libra Bat-fitxategi gehiago, seguruenik ahal izateko fitxategia erakusleak lan. Orain fitxategia erakuslea single funtzio guztietan, edo fitxategi bakar dut behin / O, sarrera-irteera funtzioa, bat bezala onartzen bere parametro edo sarrera- fitxategia erakuslea izan ezik Bat, fopen, bertan da zer fitxategia lortzeko erabili duzu lehenik eta behin erakuslea. Baina nik ondoren ireki du artxibatzen eta fitxategia erakusleak lortuko duzu, ondoren, iragan ahal izanen gisa hainbat funtzioen argumentuak buruz hitz egin dugu gaur, baita beste asko beraz fitxategiak duzu lan egin ahal izango da. Beraz, ez da sei dira nahiko oinarrizko direnak komuna ari garela, gaur egun buruz hitz egiteko. fopen eta bere laguna Funtzio fclose, fgetc eta bere laguna funtzioa fputc, eta fread eta bere laguna funtzioa, fwrite. Hargatik egokian sartu. fopen-- zer egiten du? Beno, agiri bat ireki eta hura erakuslea fitxategi bat ematen dizu bertara, beraz, ondoren, erabili ahal izango dela erakuslea fitxategi argumentu bezala Beste fitxategi I / O funtzioak edozein. Garrantzitsuena to fopen gogoratzen dela ondoren ireki du artxibatzen edo den moduko bat dei egin hemen, ziurtatu egin gaitu behar da erakuslea duzula bueltatu Ez da berdina null. Ez duzu bideoa ikusi ditut bada erakusleak, hori ez du zentzurik. Baina saiatu baduzu eta erreferentzia kenduta a null erakuslea oroitzapen, Zure programa ziurrenik jasango segmentazio bat [INAUDIBLE]. To egin nahi dugu dugu legitimoa erakuslea itzuli bat lortu. Garai hartako gehiengo zabala izango dugu Ahaztuak zilegia erakuslea itzuli eta, ez da arazo bat izan. Beraz, nola ez dugu egin fopen dei bat? Nahiko askoz honen antza du. Fitxategia izar generic izateaz PTR ptr-- fitxategi izen erakuslea fopen eta pasa dugu bi gauza, fitxategi izen eta eragiketa bati ekiteko nahi dugu. Beraz, nahi duten bezala begiratzen dei bat egin behar dugu Halako fitxategia izar ptr 1 funtzioak fopen 1fitxategia.txt. Eta eragiketa aukeratu dut r da. Beraz, zer uste duzu r hemen da? Zer dira gauza mota egin dugu fitxategiak egiteko gai izan daiteke? Beraz r operazioa dela dugu aukeratu Artxibategi bat irakurri nahi dugu. Beraz genuke funtsean denean honen antzeko dei bat egin dugu geure buruari lortzean fitxategia erakuslea besteak beste, ondoren, izan dugu informazioa irakurri 1fitxategia.txt from. Era berean, fitxategia 2.txt ireki ahal izan genuen Idazteko eta beraz, ezin dugu ptr2, dut hemen sortutako fitxategi erakuslea, Edozein funtzioa argumentu gisa duten Informazio idazten fitxategi batean gordetzen ditu. Eta idatziz antzekoa da, ez da aukera ere, erantsi bat. Arteko aldea idazten eta erantsi ari dira idatzi fitxategi bat aurkitu behar dela, Dei baten idazketarako fopen egiten baduzu eta fitxategia dagoeneko existitzen da, da, Fitxategi osoa gainidatzi egingo da. Honez martxan jarriko hasieran oso, informazio guztia ezabatzen hori da dagoeneko. Irekitzean bada erantsi berriz, egingo lerro amaierara joan da Dagoeneko testua bada edota informazioak, eta orduan hasiko da hortik idazten. Beraz, ez duzu galduko edozein aurretik egin duzun informazioa. Idatzi edo erantsi nahi duzun ala ez Sort egoeraren araberakoa da. Baina seguruenik ez duzu jakingo zer egin eskuineko eragiketa da Unea iritsita. Beraz, hori fopen da. Zer fclose buruz? Beno, nahiko besterik gabe, fclose besterik fitxategi erakuslea onartzen. Eta espero dezakezun bezala, fitxategi hori itxi egiten du. Eta behin fitxategi bat itxi dugu, ezin dugu Bat gehiago fitxategia I / O funtzioak betetzeko, irakurtzen edo, idatziz fitxategia horretan. Berriro ireki du daukagu denbora beste fitxategi ordenan lanean jarraitzeko I / O funtzioak erabiliz. Beraz fclose bitartekoak Bukatutakoan fitxategia honekin lanean. Eta gainditu beharko dugun guztia da erakuslea fitxategi baten izena. Beraz on pare bat diapositibak duela, dugu fopened fitxategia 1 dot irakurzaletasuna testua eta esleitutako dugun Fitxategi adierazlea ptr1 izateko. Orain erabaki dugu gaude egin fitxategia irakurtzean. Ez dugu behar du gehiago egin behar da. Besterik fclose ptr1 ahal dugu. Eta, era berean, ezin izan dugu fclose beste batzuk. Ados. Beraz, irekitzeko eta ixteko. Horiek dira bi oinarrizko eragiketak hasita. Orain benetan nahi dugu gauza interesgarri batzuk egin, eta lehenengo funtzioa duten zaitugu ikusi egingo dela egin dela fgetc-- artxibatzen pertsonaia bat lortzeko. Hori zer fgetc, oro har, itzultzea litzateke. Bere bizitzako helburua da, hurrengo pertsonaia irakurri, edo hori da, bada, zure oso fgetc lehen deialdian fitxategi jakin bat, Lehenengo pertsonaia. Baina gero, ondoren, Hurrengo bat lortuko duzu, Oso Hurrengo fitxategia horren izaera, gordetzen da eta pertsonaia aldagai batean. Hemen egin dugun bezala, char ch berdinen fgetc, erakuslea fitxategi baten izena pasatzen. Berriz ere, oso da Garrantzitsua hemen gogoratu ordena horretan izan Eragiketa honen arrakasta, the fitxategia erakuslea bera nion izan da irakurketarako ireki. Ezin dugu pertsonaia bat fitxategi batetik irakur erakuslea ireki genuen idazteko. Beraz, hori da bat fopen mugak, ezta? Mugatu behar dugu bakarra eszenikoen geure erakuslea fitxategi batekin eragiketa bat. Irakurri nahi badugu eta fitxategia beretik idatzi, open bi bereizi beharko genituzke fitxategia fitxategi bera erakusleak irakurketa bat, idazketarako bat. Beraz, berriro ere, arrazoi bakarra Ekarriko dut up now da ari gara dei bat egin nahi izanez gero delako fgetc, fitxategi erakuslea nion dagoela izan da irakurketarako ireki. Eta gero, nahiko besterik gabe, Guztiak egin behar dugu da fitxategi erakuslea izenean gainditu. Beraz char ch fgetc ptr1 berdin. Hori da gurekin lortzeko joan hurrengo character-- edo berriz ere, hau da lehenengoa bada denbora dei hau egin dugu, lehen character-- zeintzunahi agiria adierazi ptr1 arabera. Gogoratu zela fitxategia 1 dot testua. Duten lehen pertsonaia jasoko ditu eta gorde egingo dugu ch aldakorra ere. Nahiko erraza. Beraz, gu ere hiru begiratu zion funtzio eta dagoeneko dugu Zerbait nahiko garbia egin dezake. Beraz, gaitasun hori hartzen badugu pertsonaia bat lortzeko eta guk begizta it orain dugu karaktere eskuratu jarraitzeko fitxategi batetik gorako eta behin eta over-- orain dugu single guztietan irakur daiteke Fitxategi baten izaera. Eta pertsonaia bakoitzak inprimatzeko badugu dela irakurri dugu berehala ondoren, ditugu jada fitxategi bat irakurri eta bere edukiak inprimatutako pantailara. Eraginkortasunez ditugu kateatu fitxategi hori pantailan. Eta hori da egin Linux komando katu egiten du. Katu idazten baduzu fitxategia izenean, hura eduki osoa inprimatu egingo zure terminal-leiho batean fitxategi. Eta beraz, begizta txiki honetan hemen, Kode lerro hiru bakarrik, baina modu eraginkorrean bikoizten da Linux komando katua. Beraz, sintaxia hori bateragarria apur bat arraro begiratzen, baina hemen zer gertatzen ari da hemen. Ch berdinen fgetc bitartean, ptr ez da berdinak EOF-- den mokadu oso bat da, baina dezagun hautsi du behera, besterik gabe, beraz, sintaxia on argi da. Nik finkatu egin da espazio mesedetan, apur bat izan arren sintaktikoki delikatua. Beraz, eskuineko berde zati hau orain, zer egiten ari da? Beno, hori besterik gabe, gure fgetc deia da, ezta? Aurretik ikusi dugu. Honez bat lortzea fitxategia karaktere. Orduan alderatu dugu EOF aurka pertsonaia. EOF balio berezi hori da io.h estandarra, definitutako bertan fitxategia pertsonaia amaiera izango da. Beraz, funtsean, zer gertatuko dago begizta hau pertsonaia bat irakurriko du, konparatu EOF da, fitxategia pertsonaia amaiera. Ez badute datoz, beraz, ez daukagu lerro amaierara iritsi, Pertsonaia hori inprimatu egingo dugu. Ondoren, atzera egingo dugu aurrean Begizta berriz hasten. Pertsonaia bat lortuko dugu egiaztatu EOF aurka, inprimatu, eta abar eta abar, eta abar, begizta bidez, modu horretan Nik lerro amaierara iritsi arte. Eta gero, puntu horretan, inprimatutako egingo dugu Fitxategiaren eduki osoa out. Beraz, berriro ere, bakarrik ikusten dugu fopen, fclose, eta fgetc eta dagoeneko bikoiztu ahal izango dugu Linux terminal komando bat. Esan bezala hasieran I, fgetc eta fputc izan genuen, eta fputc laguna izan zen fgetc funtzioa. Eta, beraz, baliteke imajinatu bezala, idazketa baliokidea da. Bat idazteko aukera ematen digu fitxategi batean gordetzen karaktere bakar. Berriz ere, Oharra izateagatik, besterik zen bezala fgetc batera, fitxategia ari garela nion honetara idatzita egon idatziz edo erantsi ireki. Saiatzen gara eta bada erabili fputc fitxategi batean Nik dugun irakurketa ireki, Jasaten goaz Akats bat pixka bat. Baina deia nahiko erraza da. fputc kapital ptr2 A, guztiak hori egin egingo dela da hizkia idazteko joan A fitxategi 2 dot sartu testua, bertan zegoen izenean artxibatzen inauguratu zen eta esleitzen dugun erakuslea ptr2. Beraz, goazen bat idazteko joan capital A 2 dot testu fitxategian. Eta oihu egin idatzi dugu 3. puntuan dot artxibatzen testua, eta bertan adierazi ptr3 arabera. Beraz, berriro ere, nahiko erraza hemen. Baina orain beste gauza bat egin ahal izango dugu. Adibide hau daukagu besterik ez ginen pasa katua errepikatzeko gai izatea buruz Linux komando, hori bistaratzen bat pantailara. Beno, gaur egun gaitasuna dugula fitxategiak karaktereak irakurtzeko eta pertsonaiak idatzi fitxategiak, zergatik ez da aldaketa besterik ez dugu deitu, dei bati fputc printf. Eta orain bikoiztuta ditugun cp, Oso oinarrizko Linux komando bat buruz hitz egin dugu bide luzea dagoela Duela Linux bideo-komandoak. Eraginkortasunez dugu hementxe bikoiztuta. Pertsonaia bat irakurtzen ari gara eta gero ez gara beste fitxategi pertsonaia hori idatziz. Fitxategia batetik irakurtzea, idaztea beste, behin eta nahi eta berriz EOF hit arte. Nik amaieran lortu dugu fitxategian kopiatzen saiatzen ari gara. Eta hitz horiekin dugun guztia idatzi dute egingo pertsonaietako fitxategia behar dugu ari gara idazten duten. Beraz, hau cp, Linux kopia komandoa da. Oso urtearen hasieran Bideo honetan, Oharra izan nuen Hori bat hitz egiten genuen erakusleak buruz pixka. Hemen da zehazki non gaude erakusleak buruz hitz egingo Horrez gain erakusleak fitxategian. Beraz, funtzio hau motatako beldurgarria itxura. Honez hainbat parametro lortu. Ez da asko gertatzen da hemen da. Badira desberdin asko da Kolore eta testuak. Baina benetan, besterik ez da fgetc bertsioa orokorra Hori edozein lortzeko aukera ematen digu Informazio kopuru. Pixka bat eraginkorrak ez bagaude izan daiteke karaktere lortzean denbora batean, file bidez errepikatzean aldi berean pertsonaia bat. Ez al litzateke politagoa izan da iritsi 100 denbora bat edo 500 aldi berean? Beno, fread eta bere laguna funtzioa fwrite, buruz hitz egingo dugu bigarren bat, baimendu besterik ez da egin digu. Kopuru arbitrario bat irakurri ahal izango dugu fitxategi batetik informazio eta gordeko dugu, nonbait, aldi baterako. Horren ordez gai izatea besterik behar moldatzen da aldagai bakar batean, zitekeen array batean gorde behar dugu. Eta orain, lau pasako dugu argumentuak erakuslea fread-- den non gaude informazioa gordetzeko joan, nola informazio unitate bakoitzeko handiak izango dira, Informazio unitateak zenbat eskuratu nahi dugu, eta bertatik hau da, fitxategi horiek lortu nahi dugu. Ilustratu seguruenik onena Adibide bat hemen. Beraz, esan dezagun aitortzen dugu 10 zenbaki osoen array bat. Besterik ez dugu deklaratu pilatu arbitrarioki int ARR 10. Beraz, nahiko erraza da. Orain zer bagina egiten ari gara da frecall da irakurtzen ari gara int tamaina aldiz, 10 informazio byte. Int izate neurria four-- hori da c zenbaki oso bat tamaina. Beraz, zer egiten ari garen bezalako irakurtzen ari gara 40 byte informazio merezi fitxategia batetik adierazi ptr arabera. Eta horiek gordetzeko ari gara 40 byte nonbait non ezarri ditugu alde batera utzita 40 byte memoria merezi. Zorionez, dagoeneko egin dugun moduan ARR geratuko, array bertan. Hori dela eskuratzeko gai 10 lau byte unitateak. Beraz, guztira, 40 eutsi ahal izango da byte informazio merezi. Eta orain, 40 byte irakurtzerakoan dugu fitxategitik informazio, eta egiten ari gordetzeko dugu ARR ere. Erakusleak bideoko Gogoratu sorta bat, besteak beste, ARR gisa izenean, benetan erakuslea besterik Bere lehen elementua da. Beraz, noiz pasatzen dugu ARR ere ez, ez dugu dira, hain zuzen ere, erakuslea igaroz. Antzera Halako egin ahal izango dugu ez dugu nahitaez pilan gure buffer gorde behar. Era berean, ezin dinamikoki esleitu dugu hau bezalako buffer, malloc erabiliz. Gogoratu, betiere dugu dinamikoki esleitu memoria, Oraindik aurrezteko dugu arazoak izaten ari, ezin pila. Baina oraindik buffer bat. Oraindik da, kasu honetan, ez da 640 Informazio byte eusten bikoitza hartzen zortzi byte delako. Eta 80 Horietako ari gara galdezka. Espazioa izan nahi dugu 80 bikoitzak eduki. Beraz, 80 aldiz 8 640 byte informazio da. Eta fread deia dela 640 Informazio byte biltzeko fitxategia adierazi by PTR eta orain gordetzeko arr2 ere. Orain, gainera, fread tratatu ahal izango dugu besterik fgetc dei bat bezala. Kasu honetan, besterik ez dugu saiatzen ari fitxategia karaktere bat lortzeko. Eta ez dugu behar bat pertsonaia bat eduki sorta. Besterik ezin dugu bertan denda Pertsonaia aldagai bat. Harrapatzen, nahiz eta, hori da, denean besterik ez dugu aldagai bat, Ikastaroa gainditu behar dugu aldagai horren helbidea Gogoratu delako fread lehen argumentua kokapena eta memoria erakuslea da Bertan informazioa gorde nahi dugu. Berriz ere, batzuen izena array erakuslea da. Beraz, ez dugu behar array ampersand egin. Baina c, pertsonaia c Hemen, ez dago aukeran. Aldagai bat besterik ez da. Eta beraz bat gainditu behar dugu ampersand c den adierazteko Hori dela eta bertan nahi dugun helbidea da Bat informazio byte hau gordetzeko, Bat pertsonaia hori ptr ari gara jasotzen. Fwrite-- joango naiz bitartez hau pixka bat gehiago azkar nahiko askoz fread baliokidea zehatza ezik idazketarako da ordez irakurketaren, besterik other-- bezala irekita izan dugu eta itxi, pertsonaia bat lortzeko, pertsonaia bat idatzi. Orain lortu arbitrarioa da Informazio kopuru, eskuineko informazio kopuru arbitrarioa. Beraz bezala aurretik, ahal dugun 10 zenbaki osoen array bat non dagoeneko badugu Informazio gordeta, agian. Kode lerro batzuk Ziurrenik zen duten bi hauen artean joan behar du non batera ARR bete dut zerbait esanguratsua. Egiten dut bete 10 osokoak ezberdinekin. Eta horren ordez, zer naiz egiten ari da, ARR idazten eta ARR-tik informazioa biltzeko. Eta informazio hori hartu dut eta jarriz fitxategia sartu. Beraz ordez izatetik da buffer fitxategia, ari gara, hemendik aurrera doa fitxategira bufferraren. Beraz, besterik gabe, alderantzizkoa da. Beraz, berriro ere, besterik ez bezala, aurretik, ahal dugun Era berean, zeure memoria zatia dinamikoki ditudan dugu esleitu eta hori irakurri eta idatzi dituen fitxategia da. Eta aldagai bakar bat ere izan dugu byte bat eskuratzeko gai Informazio, hala nola, pertsonaia gisa. Baina, berriro ere, gainditu beharko dugu aldagai horren helbidea denean bertatik irakurri nahi dugu. Beraz, informazioa idatz dezakegu aurkituko helbide hartan dugu fitxategia erakusleak, PTR. Ez da, beste asko fitxategia handia I / O funtzioak Hori egin hainbat gauza gainera Direnak gaur hitz egin dugu. Direnak pare bat erabilgarria aurkituko duzu agian Fgets eta fputs dira, bertan baliokideak dira fgetc eta fputc of baina irakurtzeko fitxategi batetik katea bakar batean. Horren ordez karaktere bakar bat, kate oso bat irakurri ahal izango da. fprintf, funtsean ahalbidetzen printf erabili behar duzu fitxategi batean idatzi behar. Beraz, besterik ez bezala egin ahal izango duzu aldagai ordezkapena erabiliz placeholders ehuneko i eta ehuneko d, eta abar, printf era berean, ezin duzu hartu du printf kate eta inprimatu zerbait fitxategi batean gordetzen duten bezala. fseek-- DVD bat baldin baduzu analogia erabili ohi dut hemen da Sort erabiliz bezalakoa da zure atzeratzeko eta Aurreratu botoiak movie mugitzeko. Era berean, fitxategia inguruan mugitu ahal izango duzu. Gauzak barrutik bat Fitxategiaren egitura c sortzen adierazle bat da duzu non daude fitxategia duzun. Zu zara oso at hasiak byte zero? Dira hemen duzu byte 100 at, byte 1.000, eta abar? Erabili ahal izango duzu kokapenean fseek arbitrarioki mugitu Adierazle hori aurrera edo atzera. Eta ftell, berriro DVD bat antzekoa, erlojua pixka bat esaten bezalakoa da zenbat minutu eta segundo dituzu Filma jakin bat sartu dira. Era berean, nola kontatzen ftell byte asko baitira fitxategi barruan. feof beste bertsio bat da Nik duzun ala ez detektatzeko lerro amaierara iritsi. Eta ferror funtzioa da erabili ditzakezun ala zerbait detektatzeko Lan-oker desagertu fitxategi batekin. Berriz ere, hau da, besterik gabe, azalera scratching. Ez da oraindik fitxategia askorekin gehiago I / O the io.h. funtzio Baina hau izango da ziurrenik lortuko duzu fitxategia erakusleak lanean hasi zen. Naiz Doug Lloyd. Hau CS50 da.