[Powered by Google Translate] [Comhad I / O]
[Jason Hirschhorn, Ollscoil Harvard]
[Tá sé seo CS50, CS50.TV]
Nuair a smaoinímid ar comhad, a thagann chun cuimhne cad is doiciméad Word Microsoft,
íomhá JPEG, nó amhrán MP3,
agus idirghníomhú le gach ceann de na cineálacha comhaid ar bhealaí éagsúla.
Mar shampla, i ndoiciméad Word chur linn téacs
agus le híomhá JPEG d'fhéadfadh muid barr amach an imill nó na dathanna retouch.
Ach faoi na cochall bhfuil gach ceann de na comhaid in ár ríomhaire aon rud níos mó
ná sraith fhada de nialais agus cinn.
Tá sé suas go dtí an t-iarratas ar leith a idirghníomhaíonn leis an gcomhad
a chinneadh conas a phróiseáil an seicheamh seo fada agus é a chur i láthair don úsáideoir.
Ar lámh amháin, féadfar doiciméad breathnú ar bheart amháin,
nó 8 nialais agus cinn, agus a thaispeáint carachtar ASCII ar an scáileán.
Ar an láimh eile, is féidir íomhá bitmap breathnú ar 3 bytes,
nó 24 nialais agus cinn,
agus iad a léirmhíniú mar 3 líon heicsidheachúlach
a léiríonn na luachanna le haghaidh dearg, glas, agus gorm
i gceann picteilín de íomhá.
Cibé rud a d'fhéadfadh siad ag breathnú cosúil ar do scáileán, ag a chroí,
Comhaid bhfuil rud ar bith níos mó ná sraith de nialais agus cinn.
Mar sin a ligean ar Léim i agus breathnú ar conas a ionramháil iarbhír na nialais agus cinn
nuair a thagann sé chun scríobh chuig agus léamh ó chomhad.
>> Feicfidh mé tús a bhriseadh síos i próiseas simplí 3-chuid.
Next, beidh mé Léim isteach dhá shampla cód a léiríonn na trí chuid.
Ar deireadh, beidh mé athbhreithniú a dhéanamh ar an bpróiseas agus roinnt de na sonraí is tábhachtaí.
Mar is amhlaidh le haon chomhad go suíonn ar do dheasc,
Is é an chéad rud a dhéanamh chun é a oscailt.
I C dhéanaimid é seo trí dhearbhú pointeoir a struct réamhshainithe
gur ionann comhad ar do dhiosca crua.
Sa glaoch fheidhm, a chinneadh againn chomh maith cibé acu is mian linn a scríobh nó léamh ó na comhaid.
Next, a dhéanann muid an léamh iarbhír agus scríbhneoireacht.
Tá roinnt feidhmeanna speisialaithe féidir linn a úsáid sa chuid seo,
agus tús a beagnach gach duine acu leis an litir F, a sheasann do chomhad.
Seo caite, oscailte cosúil leis na X beag dearg sa chúinne barr na comhaid ar do ríomhaire,
táimid ag an comhad a dhúnadh le glaoch feidhm deiridh.
Anois go bhfuil muid ag smaoineamh ginearálta ar cad tá muid ag dul a dhéanamh,
a ligean ar Léim isteach an cód.
>> Sa eolaire, tá dhá comhaid C agus a gcomhaid inrite comhfhreagrach.
Bíonn an clár clóscríobhán argóint amháin argóintí ann,
ainm an doiciméad ba mhaith linn a chruthú.
Sa chás seo, beidh orainn glaoch doc.txt é.
A ligean ar a reáchtáil ar an gclár agus cúpla línte isteach.
Dia duit. Is é mo ainm Jason.
Ar deireadh, beidh muid ag clóscríobh "scor."
Má táimid liosta anois gach ceann de na comhaid san eolaire,
feicimid go bhfuil doiciméad nua ar a dtugtar doc.txt.
Sin an comhad an clár seo ach a cruthaíodh.
Agus ar ndóigh, tá sé ró-aon rud níos mó ná sraith fhada de nialais agus cinn.
Má osclaíonn muid an comhad nua,
a fheicimid an 3 línte de chód tháinig muid isteach inár gclár -
Dia duit. Is é Bealtaine ainm Jason.
Ach tá cad a théann ar aghaidh nuair a ritheann typewriter.c?
Is é an chéad líne spéise dúinn líne 24.
Sa líne seo, táimid dhearbhú ár pointeoir comhaid.
Bíonn an fheidhm seo go bhfilleann an pointeoir, fopen, dhá argóint.
Is é an chéad ainm comhaid lena n-áirítear an síneadh comhad más cuí.
Glaoch ar ais nach síneadh comhad tionchar a imirt ar comhad ag an leibhéal is ísle.
Táimid ag déileáil i gcónaí le sraith fhada de nialais agus cinn.
Ach a dhéanann sé tionchar a imirt ar conas comhad a léiriú agus cad iarratais a úsáidtear chun iad a oscailt.
Is í an argóint dara fopen litir amháin
a sheasann ar cad tá sé beartaithe againn a dhéanamh tar éis oscailte againn an comhad.
Tá trí rogha ar an argóint - W, R, agus A.
Táimid tar éis a roghnaíodh w sa chás seo mar ba mhaith linn a scríobh chuig an gcomhad.
R, mar is féidir leat buille faoi thuairim is dócha, is é a léamh chun an comhad.
Agus is le ceangal chun an comhad.
Cé go bhfuil an dá w agus is féidir a úsáid le haghaidh scríobh chuig comhad,
Beidh w tús a scríobh ó thús an chomhaid
agus scríobh d'fhéadfadh aon sonraí atá stóráilte cheana féin.
De réir réamhshocraithe, an comhad a oscailt linn, más rud é nach ndéanann sé ann cheana,
Is é a cruthaíodh inár n-eolaire ag obair faoi láthair.
Mar sin féin, más mian linn rochtain a fháil nó a chruthú comhad i suíomh difriúil,
san argóint chéad fopen,
is féidir linn a shonrú cosán comhad chomh maith leis an ainm comhaid.
Cé go bhfuil an chéad chuid den phróiseas seo ach líne amháin de chód fada,
tá sé i gcónaí dea-chleachtas a chur san áireamh a leagtar eile de línte
a sheiceáil chun a chinntiú go raibh an comhad a osclaíodh nó a bunaíodh go rathúil.
Má fhilleann fopen null, ní bheadh ​​muid ag iarraidh a chruthú chun tosaigh lenár gclár,
agus d'fhéadfadh sé seo tarlú má tá an córas oibriúcháin as cuimhne
nó má iarracht muid a oscailt comhad i eolaire ar ina leith nach raibh againn an cead cuí.
>> Bíonn cuid a dó den phróiseas i lúb agus clóscríobhán ar.
Bainimid úsáid as CS50 fheidhm leabharlainne ionchur a fháil ó an t-úsáideoir,
agus ag glacadh leis nach bhfuil siad ag iarraidh a scor ar an gclár,
úsáidimid an fputs fheidhm a chur ar an téad agus scríobh sé chun an comhad.
Is é fputs ach ceann amháin de na feidhmeanna go leor d'fhéadfadh muid a úsáid chun scríobh chuig an gcomhad.
Daoine eile san áireamh fwrite, fputc, agus fiú fprintf.
Beag beann ar an fheidhm áirithe againn deireadh suas ag baint úsáide as, áfach,
iad go léir a fhios, tríd a gcuid argóintí,
ar a laghad dhá rud -
cad is gá a scríobh agus nach gá dó a bheith i scríbhinn a.
In ár gcás, tá ionchur an teaghrán gur gá a scríobh
agus is é FP an pointeoir a ordóidh dúinn nuair a bhíonn muid ag scríobh.
Sa chlár seo, tá cuid a dó den phróiseas in áit simplí.
Táimid ag cur go simplí ar shraith as an t-úsáideoir
agus ag cur go díreach chuig ár comhad beag-go-aon bailíochtú ionchur nó seiceálacha slándála.
Go minic, áfach, beidh cuid a dó chur suas ar an chuid is mó de do chód.
Ar deireadh, tá cuid triúr ar líne 58, i gcás ina muid an comhad a dhúnadh.
Anseo tugaimid fclose agus lig ár n-pointeoir comhaid bunaidh.
Sa líne ina dhiaidh sin, ar ais muid náid, agus beidh deireadh ar ár gclár.
Agus, tá, tá cuid de thrí chomh simplí sin.
>> A ligean ar bogadh ar aghaidh le léamh ó chomhaid.
Ar ais inár n-eolaire ní mór dúinn a comhad a dtugtar printer.c.
Ligeann rith sé leis an comhad a cruthaíodh againn ach -
doc.txt.
An clár seo, mar a léiríonn an t-ainm a bheidh, a phriontáil amach ach an t-ábhar an comhad a rith leis.
Agus ní mór dúinn é.
Na línte de chód a bhí clóscríofa againn níos luaithe agus a shábháil i doc.txt.
Dia duit. Is é mo ainm Jason.
Má Léim muid isteach printer.c,
feicimid go Breathnaíonn a lán de chód cosúil le cad a shiúil muid ach trí i typewriter.c.
Go deimhin líne 22, áit ar oscail muid an comhad,
agus líne 39, i gcás a dúnadh muid an comhad,
tá an dá beagnach comhionann leis typewriter.c, ach amháin le haghaidh fopen argóint dara.
An uair seo táimid ag léamh ó chomhad,
mar sin ní mór dúinn a roghnaíodh r ionad w.
Dá bhrí sin, a ligean ar díriú ar an dara cuid den phróiseas.
Ar aon dul 35, mar an dara coinníoll i lúb ár 4,
a dhéanamh linn glao a fgets,
an fheidhm compánach fputs ó roimh.
An uair seo ní mór dúinn trí argóintí.
Is é an chéad an pointeoir ar an sraith de charachtair áit a mbeidh an teaghrán a stóráil.
Is é an dara an líon uasta de charachtair a léamh.
Agus is é an tríú an pointeoir chun an comhad a bhfuil muid ag obair.
Feicfidh tú faoi deara go dtagann deireadh leis an do lúb nuair a fhilleann fgets Eolas faoin margadh saothair.
Tá dhá chúis go bhféadfadh sé seo a tharla.
Gcéad dul síos, d'fhéadfadh earráid a tharla.
Dara, agus níos mó seans ann, thángthas ar an deireadh an chomhaid agus a léamh carachtair nach bhfuil níos mó.
I gcás go bhfuil tú wondering, an bhfuil dhá fheidhm ann a ligfidh dúinn a insint
a bhfuil cúis an chúis le haghaidh an pointeoir nialasach ar leith.
Agus, ní nach ionadh, toisc go bhfuil siad a dhéanamh le bheith ag obair le comhaid,
araon an fheidhm ferror agus tús feidhm feof leis an f litir.
>> Ar deireadh, roimh thabhairt i gcrích againn, ceann amháin nóta mear faoi dheireadh na bliana fheidhm comhad,
atá, mar a luadh ach tá scríofa mar feof.
Is minic go mbainfidh tú féin a aimsiú ag baint úsáide as fad agus do lúba a léamh go comhleanúnach do bhealach a dhéanamh tríd comhad.
Dá bhrí sin, beidh ort ar bhealach chun deireadh a chur leis na lúb i ndiaidh duit a bheith ag an deireadh de na comhaid seo.
Ag glaoch ar feof ar do pointeoir chomhad agus seiceáil a fheiceáil má tá sé fíor
Ba mhaith a dhéanamh go díreach.
Dá bhrí sin, d'fhéadfadh lúb agus de réir an choinníll (! Feof (FP)) cosúil mhaith ar réiteach foirfe is cuí.
Mar sin féin, a rá ní mór dúinn líne amháin fágtha inár gcomhad téacs.
Beidh muid isteach ar ár lúb fad agus beidh gach rud a oibriú amach mar a bhí beartaithe.
Ar an chéad bhabhta eile tríd, beidh ár gclár seiceáil a fheiceáil má tá feof Chreatchlár fíor,
ach - agus seo é an pointe ríthábhachtach a thuiscint anseo -
ní bheidh sé a bheith fíor ach go fóill.
Sin toisc nach bhfuil an cuspóir feof a sheiceáil
más rud é go mbeidh an chéad ghlaoch eile le feidhm a léamh bhuail an deireadh an chomhaid,
ach a sheiceáil cibé acu atá nó nach bhfuil an deireadh an comhad bainte amach cheana féin.
I gcás sampla seo,
léamh an líne deireanach ar ár comhad a théann breá réidh,
ach nach bhfuil an clár a fhios fós go atá againn bhuail an deireadh ár comhaid.
Níl sé go dtí a dhéanann sé ar cheann léamh breise cuntair sé an deireadh an chomhaid.
Dá bhrí sin, bheadh ​​a bheith ina choinníoll ceart seo a leanas:
fgets agus na trí argóintí - aschur, méid aschuir, agus FP -
agus gach ceann de sin ní ionann nialasach.
Is é seo an cur chuige a ghlacamar i printer.c,
agus sa chás seo, tar éis na bealaí amach lúb,
d'fhéadfaí tú glaoch feof nó ferror chur in iúl don úsáideoir maidir leis an réasúnaíocht ar leith scor an lúb.
>> Ag scríobh chuig agus a léamh ó chomhad, is é ag a is bunúsaí,
simplí 3-chuid phróiseas.
Gcéad dul síos, oscailte againn an comhad.
Sa dara háit, chuir muid roinnt rudaí isteach inár chomhad nó a thógáil ar roinnt rudaí as é.
Sa tríú háit, táimid ag an comhad a dhúnadh.
Is iad na codanna chéad seo caite éasca.
Tá an chuid lár nuair a luíonn an stuif tricky.
Agus cé go thíos an cochall tá muid ag déileáil i gcónaí le sraith fhada de nialais agus cinn,
a dhéanann sé cabhrú nuair códaithe a chur sraith de astarraingthe
gur casadh an t-ord i rud éigin go resembles níos dlúithe cad táimid ag úsáid a fheiceáil.
Mar shampla, má tá muid ag obair le comhaid bitmap 24-giotán,
beidh muid ag dócha a bheith ag léamh nó ag scríobh trí bytes ag an am.
Agus sa chás sin, bheadh ​​sé ciall a shainiú agus a cuí a ainmniú
a struct a bheidh 3 bytes mór.
>> Cé go d'fhéadfadh bheith ag obair le comhaid cosúil casta,
úsáid a bhaint as iad a ligeann dúinn a dhéanamh rud éigin fíor iontach.
Is féidir linn a athrú ar an staid an domhan taobh amuigh ár gclár,
féidir linn a chruthú rud éigin a saol thar an saol ar ár gclár,
nó is féidir linn a athrú fiú rud éigin a cruthaíodh roimh a thosaigh ár gclár ag rith.
Tá idirghníomhú leis an comhad a cuid fíor-chumhachtach de chláir i C.
agus tá mé ar bís a fheiceáil cad a bhfuil tú ag dul a chruthú leis an cód atá le teacht.
Is é mo ainm Jason Hirschhorn. Is é seo an CS50.
[CS50.TV]
>> [Gáire]
Maith go leor. Amháin a ghlacadh. Anseo théann muid.
Nuair a smaoinímid ar comhad - >> Oh, fan. Tá brón orm.
[Gáire] Ar Maith go leor.
Hey there.
Nuair a smaoinímid ar comhad -
Nuair a cheapann tú de comhad - Maith go leor. Inis dom nuair a bhíonn tú réidh.
Ó, go hiontach.
Is féidir Cé léamh ó teleprompter cosúil - uimh. Mo dona.