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