[Powered by Google Translate] [Roinn 5 - Níos Compordach]
[Rob Bowden - Ollscoil Harvard]
Is é [seo CS50. - CS50.TV]
>> Mar a dúirt mé i mo ríomhphost, tá a lán de na rudaí is féidir leat é a úsáid
seachas an fearas a dhéanamh i ndáiríre an tacair bhfadhb.
Molaimid a dhéanann tú é i an fearas toisc ansin is féidir linn níos éasca cabhrú leat
agus tá a fhios againn conas a bhíonn gach rud ag dul ag obair.
Ach mar shampla amháin de áit ar féidir leat rudaí a dhéanamh más rud é, a rá, ní gá duit rochtain
le fearas nó ba mhaith leat a bheith ag obair san íoslach Ionad Eolaíochta -
a ndáiríre tá siad an fearas freisin -
más mian leat a bheith ag obair in aon áit.
Tá Sampla amháin is ea an bhfaca tú / chuala SSH?
SSH go bunúsach go díreach mar a nascadh le rud éigin.
I ndáiríre, ceart anois tá mé SSHed isteach an fearas.
Mé riamh ag obair go díreach i an fearas.
Seo é an fearas, agus má fhéachann tú síos anseo a fheiceann tú an seoladh IP.
Mé riamh ag obair i an fearas féin;
Mé ag teacht i gcónaí ar aghaidh go dtí an iTerm2 fuinneog / críochfort fhuinneog.
Is féidir leat SSH chuig an seoladh IP, ssh jharvard@192.168.129.128.
Is cuimhin liom go bhfuil líon an-éasca mar tá sé patrún dá leithéid deas.
Ach beidh a iarraidh orm le haghaidh mo phasfhocal, agus anois tá mé i an fearas.
Go bunúsach, ag an bpointe seo, más rud é oscail tú suas chríochfort taobh istigh den fearas féin,
seo comhéadan, áfach go mbeadh tú a úsáid, díreach mar an gcéanna
mar chomhéadan mé ag baint úsáide as níos mó ná anseo ach anois go bhfuil tú ag SSHed.
Ní gá duit a SSH ar an fearas.
Sampla amháin de áit eile d'fhéadfaí tú a SSH Tá mé cinnte go leor go bhfuil tú de réir réamhshocraithe -
Oh. Bigger.
Ba chóir do gach duine agaibh a bheith ag cuntais FÁS réamhshocraithe ar na freastalaithe FÁS.
Maidir liom féin, ba mhaith liom SSH go rbowden@nice.fas.harvard.edu.
Tá sé seo ag dul a iarraidh ort go bhfuil an chéad uair, agus a rá leat yes.
Is é mo phasfhocal ag dul ach a bheith ar mo phasfhocal FÁS.
Agus mar sin anois, tá mé SSHed do na freastalaithe deas, agus is féidir liom aon rud a dhéanamh ba mhaith liom ar anseo.
A lán de na ranganna d'fhéadfadh tú a ghlacadh, ar nós 124, ag dul go bhfuil tú rudaí a uaslódáil chuig anseo
a chur isteach i ndáiríre do Leagann fhadhb.
Ach rá nach bhfuil teacht agat ar do fearas.
Ansin, is féidir leat rudaí a dhéanamh, ar nós ar anseo a bheidh sé a rá -
Tá sé seo ach ár rannóg de na ceisteanna.
Beidh sé a iarraidh ort é seo a dhéanamh i an fearas.
Ina áit sin beidh mé a dhéanamh ach é a chur ar an bhfreastalaí.
Tá mé ag dul a unzip sin.
Is é an fhadhb atá ag dul a bheith go bhfuil tú a úsáidtear chun úsáid a bhaint as rud éigin cosúil le gedit
nó cibé taobh istigh den fhearas.
Níl tú ag dul go bhfuil go ar an bhfreastalaí FÁS.
Tá sé ar fad ag dul ach a bheith an comhéadan théacsa.
Mar sin, d'fhéadfaí tú ceachtar ceann amháin, déan iarracht a fhoghlaim eagarthóir téacs go bhfuil siad.
Tá siad Nano.
Nano de ghnáth éasca go leor a úsáid.
Is féidir leat úsáid a bhaint do saighde agus cineál de ghnáth.
Mar sin, ní go crua.
Más mian leat a fháil i ndáiríre mhaisiúil is féidir leat úsáid Emacs,
a bhfuil mé nár chóir d'oscail is dócha toisc nach bhfuil a fhios agam fiú conas a dhúnadh Emacs.
Rialú X, Rialú C? Yeah.
Nó is féidir leat úsáid a bhaint VIM, a bhfuil cad agam a úsáid.
Agus mar sin iad siúd do roghanna.
Más rud é nach bhfuil tú ag iarraidh a dhéanamh, is féidir leat freisin, má fhéachann tú ar manual.cs50.net--
Oh.
Ar PC, is féidir leat úsáid a bhaint as SSH putty,
a bhfuil tú ag dul a bheith a íoslódáil ar leithligh.
Ar Mac, is féidir leat ach ag Críochfort úsáid mainneachtana nó is féidir leat a íoslódáil iTerm2,
atá cosúil le Críochfort, deas mhaisiúil.
Má théann tú chuig manual.cs50.net mbainfidh tú a fheiceáil nasc chuig Notepad + +,
a bhfuil cad is féidir leat é a úsáid ar ríomhaire.
Ligeann sé SFTP tú ó Notepad + +, a bhfuil bunúsach SSH.
Cad beidh sé seo in iúl duit a dhéanamh ná in eagar do chuid comhad go háitiúil,
agus ansin uair is mian leat chun iad a shábháil, beidh sé a shábháil ar nice.fas,
áit ar féidir leat a reáchtáil ansin iad.
Agus is é an comhionann ar Mac ag dul a bheith TextWrangler.
Mar sin, ligeann sé a dhéanann tú an rud céanna.
Ligeann sé duit comhaid in eagar go háitiúil agus iad a shábháil ar do nice.fas,
áit ar féidir leat a reáchtáil ansin iad.
Mar sin, má tá tú bhfostú riamh gan fearas, tá tú na roghanna
go fóill a dhéanamh do Leagann fhadhb.
Is é an fhadhb amháin ag dul a bheith go bhfuil tú ag dul go bhfuil an leabharlann CS50
toisc nach bhfuil nice.fas de réir réamhshocraithe a bheith go.
Is féidir leat a íoslódáil ceachtar an leabharlann CS50 -
Ní dóigh liom gur gá dom go bhfuil ag an bpointe seo.
Is féidir leat a íoslódáil ceachtar an leabharlann CS50 agus é a chóipeáil ar aghaidh go dtí nice.fas,
nó I mo thuairimse, ag an bpointe seo nach bhfuil muid ag úsáid níos mó ar aon nós.
Nó má dhéanaimid, is féidir leat de thuras na huaire ina ionad
an chuir i bhfeidhm na bhfeidhmeanna sa leabharlann CS50 ar aon nós.
Mar sin, níor chóir a bheith go bhfuil i bhfad de srianadh.
Agus sin sin.
>> Feicfidh mé dul ar ais chuig an fearas anois; beidh muid ag déanamh gach rud i an fearas.
Ag Breathnú ar an rannóg ceisteanna, ag an tús, mar a dúirt mé i mo ríomhphost,
ní mór dúinn a labhairt faoi an ceann gearr a bhí ceaptha leat chun féachaint.
Tá an atreorú agus píopaí agus ar na trí cheist.
>> Chun a sruthán a feidhmeanna cosúil le scríobh printf de réir réamhshocraithe?
Mar sin, sruth. Cad is sruth?
Tá sruth bunúsach mar tá sé ach roinnt -
Níl sé fiú ina fhoinse 1s agus 0s.
Is é an sruth tá sé ag iarraidh anseo amach caighdeánach.
Agus is é sin amach caighdeán sruth go bhfuil tú nuair a scríobh sé,
atá sé ar an scáileán.
Amach Standard, trí sruth, ciallaíonn sé leat scríobh díreach 1s agus 0s dó,
agus léann an taobh eile den amach caighdeán díreach ón sruth.
Tá sé díreach ar shraith de 1s agus 0s.
Is féidir leat scríobh chuig srutháin nó is féidir leat léamh ó shruthanna
ag brath ar cad é an sruth i ndáiríre.
Is iad an dá eile sruthanna réamhshocraithe caighdeánach i agus earráid chaighdeánach.
Caighdeán i bhfuil aon uair a dhéanann tú GetString, tá sé ag fanacht chun tú a stuif ionchur.
Mar sin, ag fanacht ar do shon, ag fanacht sé i ndáiríre ar chaighdeán i,
a bhfuil i ndáiríre cad a gheobhaidh tú nuair a scríobhann tú ar an méarchlár.
Tá tú ag clóscríobh i caighdeán isteach
Tá earráid chaighdeánach go bunúsach comhionann le amach caighdeánach,
ach tá sé speisialaithe i nuair a phriontáil duit chuig earráid chaighdeánach,
tú ceaptha a phriontáil ach teachtaireachtaí earráide a ghabhann leis an
ionas gur féidir leat idirdhealú a dhéanamh idir teachtaireachtaí rialta clóite ar an scáileán
i gcoinne teachtaireachtaí earráide ag brath ar cibé chuaigh siad chun amach caighdeánach nó earráid chaighdeánach.
Comhaid freisin.
Atá as Caighdeán, caighdeán i, agus earráid chaighdeánach srutháin díreach speisialta,
ach i ndáiríre aon chomhad, nuair a osclaíonn tú comhad, bíonn sé ina sruth de bytes
áit ar féidir leat léamh ach ón sruth.
Tá tú, don chuid is mó is féidir, ach smaoineamh ar comhad mar shruth na mbeart.
Sin a dhéanamh cad sruthanna siad scríobh chuig réir réamhshocraithe? Amach Simplí.
>> Cad é an difríocht idir> agus >>?
An raibh duine ar bith féachaint ar na físeáin roimh ré? Maith go leor.
> Ag dul a bheith conas a atreorú isteach i gcomhaid,
agus tá sé >> ag dul chomh maith aschur a atreorú isteach i gcomhaid,
ach tá sé ag dul ina áit i gceangal leis an comhad.
Mar shampla, a ligean ar rá liom a tharlóidh dict a bheith ar dheis anseo,
agus is é an stuif ach amháin taobh istigh de dict cat, cat, madra, iasc, madra.
Is é ceann ordú go bhfuil tú ag an líne orduithe cat,
atá ag dul díreach a phriontáil cad atá i gcomhad.
Mar sin, nuair a rá liom dict cat, tá sé ag dul i gcló cat, cat, madra, iasc, madra. Sin a dhéanann gach cat.
Ciallaíonn sé sin go clóite sé le caighdeán amach cat, cat, madra, madra éisc,.
Más mian liom ina áit sin a athdhíriú ar comhad, is féidir liom a úsáid> agus é a athdhíriú ar is cuma cad é an comhad.
Glaofaidh mé an comhad comhad.
Mar sin anois má LS mé, beidh mé a fheiceáil go bhfuil mé comhad nua ar a dtugtar comhad.
Agus má tá mé a oscailt suas é, tá sé ag dul a bheith go díreach cad a chur cat ag an líne orduithe.
Mar sin anois má dhéanann mé arís, ansin tá sé ag dul a atreorú ar an aschur i gcomhad,
agus tá mé ag dul go bhfuil an rud céanna cruinn.
Mar sin go teicniúil, overrode sé go hiomlán cad a bhí againn.
Agus beidh orainn a fheiceáil má athraím dict, thóg mé amach madra.
Anois, má táimid cat dict i gcomhad arís, tá muid ag dul go bhfuil an leagan nua le madraí a bhaint.
Mar sin, bíonn ceannas ceann sé go hiomlán é.
Ina áit sin, má úsáidimid >>, tá sé ag dul comhad gceangal.
Anois, ag oscailt comhad, feicimid go bhfuil againn ach an rud céanna i gcló faoi dhó
toisc go raibh sé ann uair amháin, ansin i gceangal muid go dtí an bunaidh.
Mar sin, go bhfuil an méid> agus >> a dhéanamh.
An bhfuil an chéad cheann eile a iarraidh - Ní chuireann sé a iarraidh mar gheall air.
>> Is é an ceann eile go bhfuil muid <, agus má> athsheolaidh amach caighdeánach,
<Ag dul a bheith athdhíriú caighdeán isteach
Ligean ar a fheiceáil má táimid tar éis sampla.
Is féidir liom scríobh ar cheann tapa fíor.
A ligean ar a ghlacadh ar aon chomhad, hello.c.
Comhad réasúnta simplí.
Tá mé ag dul díreach ar shraith agus ansin a phriontáil "Dia duit" is cuma cad a bhí an teaghrán tháinig mé díreach.
Sin a dhéanamh Dia duit agus ansin. / Hello.
Anois, tá leideanna sé dom rud éigin a chur isteach,
rud a chiallaíonn sé ag fanacht ar rudaí a chur isteach i caighdeán isteach
Mar sin, dul isteach is cuma cad ba mhaith liom i caighdeán isteach Táimid ag dul ach a rá Dia duit, Rob!
Ansin tá phriontáil go caighdeán amach Dia duit, Rob!
Má dhéanann mé. / Dia duit agus ansin atreorú,
do anois is féidir leat a atreorú ach amháin ó chomhad.
Mar sin má chuir mé i roinnt comhad, txt, agus chuir mé Rob,
má ritheann Dia duit agus ansin an comhad txt athdhíriú isteach. / hello, tá sé ag dul a rá Dia duit, Rob! láithreach.
Nuair a fhaigheann sé ar dtús GetString agus é ag fanacht ar chaighdeán i,
caighdeánach i bhfuil a thuilleadh ag fanacht ar an méarchlár le haghaidh sonraí a fháil isteach.
Ina áit sin, ní mór dúinn a atreorú caighdeánach i a léamh ó na comhaid txt.
Agus mar sin tá sé ag dul a léamh ó txt comhad, a bhfuil ach an Rob líne,
agus ansin dul ar é a phriontáil Dia duit, Rob!
Agus má bhí mé, is féidir liom a dhéanamh chomh maith. / Dia duit <txt
agus ansin an caighdeán amach go bhfuil sé ar a phriontáil, a bhfuil Dia duit, Rob!,
Is féidir liom a atreorú go isteach ina chomhad féin.
Glaofaidh mé díreach tar éis an comhad Dia duit - ní hea, ní bheidh mé, toisc go bhfuil an inrite - txt2.
Anois, tá txt2 ag dul go bhfuil an t-aschur de. / Dia duit <txt, a bhfuil ag dul a bheith Dia duit, Rob!
>> Ceisteanna?
>> Maith go leor. Mar sin, ansin anseo tá píblíne.
Is iad Píopaí an t-aonad seo caite atreoraithe.
>> Oh. Buille faoi thuairim mé tá sé ar cheann aonad níos mó de atreorú más rud é in ionad> a dhéanann tú 2>,
go s atreorú earráid chaighdeánach.
Mar sin, má chuaigh rud éigin a earráid chaighdeánach, ní bheadh ​​sé a fháil a chur i txt2.
Ach faoi deara má dhéanann mé 2>, ansin tá a phriontáil sé fós Dia duit, Rob! ar an líne ordaithe
mar go bhfuil mé atreorú ach earráid chaighdeánach, nach bhfuil mé ag redirecting caighdeán amach.
Earráid chaighdeánach, agus amach caighdeánach éagsúla.
Má bhí tú a scríobh i ndáiríre go earráid chaighdeánach,
ansin d'fhéadfadh liom a athrú seo a bheith fprintf a stderr.
Mar sin, printf, de réir réamhshocraithe priontaí, go amach caighdeánach.
Más mian liom a phriontáil chuig earráid chaighdeánach de láimh, ansin tá mé a úsáid fprintf
agus a shonrú cad ba mhaith liom a phriontáil go.
Más rud é in ionad rinne mé stdout fprintf, ansin tá go bunúsach comhionann le printf.
Ach fprintf chuig earráid chaighdeánach.
Mar sin anois, má athdhíriú seo i txt2, Dia duit, Rob! Tá ag éirí clóite fós ag an líne orduithe
ó tá sé ag dul i gcló go earráid chaighdeánach agus tá mé ag atreorú ach caighdeán amach.
Má tá mé ag atreorú anois earráid chaighdeánach, anois ní raibh a fháil clóite, agus txt2 ag dul a bheith Dia duit, Rob!
Mar sin anois, is féidir leat do chuid earráidí iarbhír phriontáil chuig earráid chaighdeánach,
agus do theachtaireachtaí rialta a phriontáil go amach caighdeánach.
Agus mar sin nuair a ritheann tú do chlár, is féidir leat a reáchtáil mar. / Dia duit chineál seo leis an 2>
ionas go bhfuil do chlár ag dul a reáchtáil de ghnáth,
ach is féidir aon teachtaireacht earráide go bhfaigheann tú tú ag seiceáil níos déanaí i do logáil isteach earráid,
mar sin earráidí, agus ansin breathnú ina dhiaidh sin agus beidh do earráidí comhad aon earráidí a tharla a bheith acu.
>> Ceisteanna?
>> Is é an ceann deireanach píopa, ar féidir leat smaoineamh ar mar an caighdeán amach ó ordú
agus a chiallaíonn sé an caighdeán i gceannas ar an eile.
Sampla is anseo macalla rud líne ordaithe
go bhfuil dul díreach a macalla is cuma cad a chuir mé mar a argóint. Ní bheidh mé comharthaí athfhriotail a chur.
Echo blah, blah, blah go bhfuil ag dul díreach a phriontáil blah, blah, blah.
Roimhe sin, nuair a dúirt mé go raibh mé a chur Rob i gcomhad txt
toisc nach féidir liom a atreorú ach comhaid txt, ina ionad sin, / má macalla liom Rob
agus ansin píopa sé isteach. / hello, a dhéanamh freisin an cineál céanna rud.
Tá sé seo ag cur an t-aschur seo a ordú, macalla Rob,
agus é a úsáid mar an t-ionchur do. / hello.
Is féidir leat smaoineamh ar é mar a atreorú ar dtús macalla Rob i gcomhad
agus ansin ionchur. / Dia duit go comhad go raibh outputted díreach.
Ach a thógann sé an comhad sealadach amach as an pictiúr.
>> Ceisteanna ar sin?
>> Is é an chéad cheist eile ag dul chun go mbeadh seo.
Cad a d'fhéadfadh píblíne leat é a úsáid chun teacht ar an líon na n-ainmneacha ar leith i gcomhad ar a dtugtar names.txt?
Is iad na horduithe táimid ag dul a iarraidh úsáid a bhaint anseo ar leith, uniq amhlaidh, agus ansin leithreas.
Is féidir leat é uniq fear chun breathnú i ndáiríre ar cad a dhéanann sin,
agus tá sé ag dul ach a scagadh línte meaitseáil in aice as an ionchur.
Agus is é fear wc ag dul i gcló an líne nua, focal, agus líon na mbeart le haghaidh gach comhad.
Agus is é an ceann deireanach táimid ag dul a iarraidh úsáid a bhaint saghas,
atá ag dul a shórtáil ach línte comhaid txt.
Má dhéanann mé roinnt comhad txt, names.txt, agus tá sé Rob, Tommy, Joseph, Tommy, Joseph, RJ, Rob,
cad ba mhaith liom a dhéanamh anseo ná a fháil ar líon na n-ainmneacha ar leith sa chomhad seo.
Mar sin, cad ba cheart an freagra a bheith? >> [Mac léinn] 4. >> Yeah.
Ba chóir é a 4 ó Rob, Tommy, Joseph, is iad na RJ ach ainmneacha ar leith sa chomhad seo.
An chéad chéim, má dhéanann mé díreach tar éis líon focal ar names.txt,
tá sé seo ag insint i ndáiríre dom gach rud.
Tá sé seo i ndáiríre priontáil - ligean ar a fheiceáil, fear wc - línte nua, focail, agus comhaireamh beart.
Má tá mé in ann cúram ach thart ar línte, ansin is féidir liom a dhéanamh ach wc-l names.txt.
Mar sin, tá go céim 1.
Ach níl mé ag iarraidh a wc-l names.txt toisc go bhfuil names.txt ach go léir na hainmneacha,
agus ba mhaith liom a scagadh amach aon cinn neamh-uathúil.
Mar sin má féidir liom uniq names.txt, nach dtugann go leor dom cad ba mhaith liom
mar go bhfuil na hainmneacha dhúbailt fós ann.
Cén fáth go bhfuil sin? Cén fáth nach bhfuil uniq ag déanamh cad ba mhaith liom?
[Mac léinn] Níl na dúblaigh [inaudible] >> Yeah.
Cuimhnigh ar an leathanach fear do uniq deir línte meaitseáil scagaire in aice láimhe.
Nach bhfuil siad in aice láimhe, mar sin ní bheidh sé scagaire leo.
Má tá mé a shórtáil ar dtús iad, tá names.txt saghas ag dul a chur go léir na línte dúblacha le chéile.
Mar sin, anois names.txt saghas sin.
Tá mé ag dul go dtí mhaith a úsáid mar an t-ionchur a bhraitheann, a bhfuil | uniq.
Tugann sin dom Joseph, RJ, Rob, Tommy,
agus ba mhaith liom sin a úsáid mar ionchur chun wc-l,
atá ag dul a thabhairt dom 4.
Cosúil a deir sé anseo, a d'fhéadfadh a píblíne leat é a úsáid?
Is féidir leat a dhéanamh a lán de rudaí cosúil le baint úsáide as sraith na n-orduithe
nuair a úsáideann tú an t-aschur ó ordú mar ionchur leis an ordú seo chugainn.
Is féidir leat é a lán de rudaí, a lán rudaí cliste.
>> Ceisteanna?
Maith go leor.
Sin é do píopaí agus atreorú.
>> Anois táimid ag dul ar aghaidh go dtí an stuif iarbhír, an stuif códaithe.
Taobh istigh den PDF, feicfidh tú an ordaithe,
agus beidh tú ag iarraidh a reáchtáil an ordú i do fearas.
Is wget an ordú do díreach ag fáil rud éigin as an Idirlíon, go bunúsach,
mar sin wget agus an URL seo.
Má chuaigh tú ar an URL i do bhrabhsálaí, bheadh ​​sé a íoslódáil go comhad.
Chliceáil mé díreach ar sé, mar sin a íoslódáil an comhad a dom.
Ach scríobh wget an rud taobh istigh de na gcríochfort
ag dul díreach chun é a íoslódáil isteach i do teirminéil.
Tá mé section5.zip, agus beidh tú ag iarraidh section5.zip a unzip,
atá ag dul a thabhairt duit fillteán a dtugtar section5,
atá ag dul go bhfuil na comhaid go léir táimid ag dul a bheith ag baint úsáide lá atá inniu ann taobh istigh de sé.
Mar a mholadh ainmneacha comhaid na cláir seo ', tá siad Buggy giotán,
mar sin tá do misean a figiúr amach cén fáth úsáid a bhaint as gdb.
An bhfuil gach duine a íoslódáil leo / a fhios conas a fháil íoslódáil orthu
isteach ina fearas? Maith go leor.
>> Rith ./buggy1, beidh sé a rá locht Deighilt (lárnach dumped),
a mbeidh aon uair a fhaigheann tú segfault, tá sé ina rud dona.
Cad iad na himthosca a dhéanann tú a fháil segfault?
[Mac léinn] Dereferencing a pointeoir nialasach. >> Yeah. Mar sin, is é sin sampla amháin.
Dereferencing a pointeoir nialasach tú ag dul a fháil segfault.
Cad a bhealach segfault bhfuil tú ag touching cuimhne ní ba chóir duit a bheith touching.
Mar sin, dereferencing a pointeoir nialasach é touching seoladh 0,
agus go bunúsach, a rá na ríomhairí lá atá inniu ann go bhfuil 0 seoladh chuimhne ní ba chóir duit a bheith touching.
Mar sin tá sin an fáth go dereferencing ar thorthaí pointeoir nialasach i segfault.
Nuair a thiteann tú nach bhfuil a thúsú le pointeoir, ansin tá sé luach truflais,
agus mar sin nuair iarracht tú téigh i sé, i ngach dóchúlacht bhfuil tú ag touching cuimhne
go bhfuil i lár an áit.
Má tharlaíonn tú a fháil ádh agus an luach truflais
tharla go pointe éigin ar an chruach nó rud éigin,
ansin nuair a téigh tú go pointeoir nach bhfuil tú initialized,
Beidh aon rud a théann mícheart.
Ach má tá sé dírithe ar, a rá, áit éigin idir an chairn agus an carn,
nó tá sé ach cur in iúl go áit éigin nach bhfuil in úsáid ag do chlár go fóill,
ansin tá tú ag touching cuimhne ní ba chóir duit a bheith touching agus tú segfault.
Nuair a scríobhann tú feidhm athchúrsach agus recurses sé uair an iomarca
agus a fhásann do Stack ró-mhór agus an Imbhuaileann Stack i rudaí
nár chóir é a colliding le, agus tú ag touching cuimhne ní ba chóir duit a bheith touching,
mar sin leat segfault.
Sin é an rud a segfault é.
>> Tá sé freisin ar an gcúis chéanna go má tá tú ar shraith ar nós -
a ligean ar dul ar ais chuig an gclár roimhe seo.
I hello.c--I'm ag dul ach a dhéanamh rud éigin eile.
char * s = "Dia duit ar domhan!";
Má úsáideann mé * s rud nó s [0] = 'X';
mar sin déan hello,. / hello, cén fáth go raibh go segfault?
Cén fáth go raibh an segfault?
Cad ba mhaith leat bheith ag súil le tarlú?
Má raibh mé printf ("% s \ n", s); cad a mbeifeá ag súil le priontáil?
[Mac léinn] X hello. >> Yeah.
Is é an fhadhb go bhfuil tú nuair a dhearbhú ar shraith mar seo,
Is é ar pointeoir go ag dul a dul ar an chruach,
agus cad é atá dírithe ar an teaghrán atá in inléite amháin cuimhne.
Mar sin, ach ag an t-ainm chuimhne, inléite amháin, ba cheart duit a fháil ar an smaoineamh
go má tá tú iarracht a athrú cad atá i inléite amháin cuimhne,
bhfuil tú ag déanamh rud éigin ní ba chóir duit a bheith ag déanamh le cuimhne agus tú segfault.
Tá sé seo i ndáiríre difríocht mhór idir Char * s agus ruabhric s [].
Mar sin, ruabhric s [], tá anois an teaghrán seo ag dul a chur ar an chruach,
agus nach bhfuil an chairn inléite amháin, rud a chiallaíonn gur chóir obair breá breá.
Agus a dhéanann sé.
Cuimhnigh go bhfuil nuair a dhéanann mé ruabhric * s = "Dia duit ar domhan!", Is é féin ar an chruach
ach pointí s áit éigin eile, agus go dtarlaíonn áit éigin eile a bheith inléite amháin.
Ach char s [] ach rud éigin ar an chruach.
Mar sin, tá go sampla eile de segfault ag tarlú.
>> Chonaic muid gur tharla ./buggy1 i segfault.
Go teoiriciúil, ní ba chóir duit féachaint ar buggy1.c láithreach.
Ina áit sin, beidh muid ag breathnú ar sé trí gdb.
Fógra go nuair a fhaigheann tú locht Deighilt (lárnach dumped),
gheobhaidh tú an comhad seo os cionn lárnach anseo ar a dtugtar.
Má táimid l LS-, beidh orainn a fheiceáil go bhfuil croí de ghnáth comhad mór go leor.
Is é seo an líon na mbeart an chomhaid, mar sin tá sé cosúil go bhfuil sé 250-rud éigin cilibheart.
Is é an chúis atá leis seo go cad é an Dumpáil croí iarbhír
Is é nuair do tuairteanna chláir, ar staid gcuimhne do chlár
Faigheann a chóipeáil díreach agus a ghreamú isteach an comhad seo.
Tá sé Faigheann dumpáilte isteach sa chomhad.
An clár seo, cé go raibh sé ag rith, a tharla go bhfuil úsáid chuimhne de thart ar 250 cilibheart,
agus mar sin tá go bhfuair dumpáilte cad i an comhad seo.
Anois is féidir leat breathnú ar an gcomhad má dhéanaimid gdb buggy1 croí.
Is féidir linn a dhéanamh ach gdb buggy1, agus go mbeidh tús a chur díreach gdb suas go rialta,
ag baint úsáide as buggy1 mar chomhad ionchuir.
Ach má dhéanann tú gdb buggy1 croí, ansin tá sé ag dul go sonrach chun tús a chur suas gdb
trí bhreathnú ar an comhad lárnach.
Agus tú ag rá buggy1 gdb ciallaíonn a fhios a thagann go comhad lárnach ón gclár buggy1.
Dá bhrí sin tá gdb buggy1 croí ag dul a thabhairt láithreach dúinn
go dtí an áit a tharla an clár a fhoirceannadh.
Feicimid anseo Clár fhoirceannadh le comhartha 11, locht Deighilt.
Tarlú againn a fheiceáil ar líne cóimeála, nach bhfuil dócha an-chabhrach.
Ach má tá tú cineál BT nó cúl-lorg, tá go bhfuil ag dul a bheith ar an fheidhm
a thugann dúinn an liosta de na ár frámaí chairn atá ann faoi láthair.
Mar sin, cúl-lorg. Breathnaíonn sé cosúil tá muid ach dhá frámaí chairn.
Is é an chéad ár fráma Stack is mó,
agus is é an dara ceann an fráma cruaiche le haghaidh an fheidhm seo a tharlaíonn dúinn a bheith i,
a bhreathnaíonn ar nós againn ach an cód tionól do.
Mar sin a ligean dul ar ais isteach inár fheidhm is mó,
agus sin a dhéanamh gur féidir linn a dhéanamh fráma 1, agus is dóigh liom gur féidir linn a dhéanamh chomh maith síos,
ach ní liom a dhéanamh beagnach síos - nó suas. Yeah.
Suas agus síos. Suas thugann tú suas amháin fráma cruaiche, síos thugann tú síos le fráma Stack.
Claonadh agam riamh sin a úsáid.
Mé díreach tar éis a rá go sonrach fráma 1, a bhfuil dul go dtí an fráma lipéadaithe 1.
Fráma 1 ag dul a thabhairt dúinn i fráma Stack is mó,
agus deir sé ceart anseo ar an líne de chód a tharlóidh dúinn a bheith ag.
Má bhíomar ag iarraidh línte cúpla níos mó de cód, is féidir linn a rá liosta,
agus tá go dul a thabhairt dúinn go léir na línte cód timpeall air.
Ba é an líne segfaulted muid ag 6:
más rud é (strcmp ("CS50 carraigeacha", argv [1]) == 0).
Más rud é nach bhfuil sé soiléir go fóill, is féidir leat é a fháil díreach ó anseo ach ag smaoineamh cén fáth segfaulted sé.
Ach is féidir linn é a chur céim amháin eile agus a rá, "Cén fáth a mbeadh argv [1] segfault?"
Cló Let s argv [1], agus tá sé cosúil sé 0x0, a bhfuil an pointeoir nialasach.
Táimid ag strcmping CS50 carraigeacha agus Eolas faoin margadh saothair, agus mar sin go ag dul a segfault.
Agus é sin an fáth argv [1] null?
[Mac léinn] Toisc nach raibh againn a thabhairt dó aon argóintí ordú-líne.
Yeah. Ní raibh muid a thabhairt dó aon argóintí ordú-líne.
Dá bhrí sin tá ./buggy1 ag dul ach go bhfuil argv [0] a bheith ./buggy1.
Níl sé ag dul a bheith acu argv [1], ionas go mbeidh ag dul ar a segfault.
Ach más rud é, ina ionad sin, is féidir liom ach CS50, tá sé ag dul a rá leat D
toisc go bhfuil an méid atá sé ceaptha a dhéanamh.
Ag Breathnú ar an buggy1.c, tá sé ceaptha a phriontáil "gheobhaidh tú D" -
Má argv [1] nach bhfuil "CS50 carraigeacha", "gheobhaidh tú D", eile "gheobhaidh tú an A!"
Mar sin, más mian linn an A, ní mór dúinn é seo a chur i gcomparáid mar fíor,
rud a chiallaíonn go gcomparáid leis 0.
Mar sin, argv riachtanais [1] a bheith "CS50 carraigeacha".
Más mian leat a dhéanamh go bhfuil ar an líne orduithe, is gá duit a úsáid \ chun éalú an spás.
Sin a fháil CS50 \ carraigeacha agus tú ar A!
Mura ndéanann tú a dhéanamh ar an cúlslais, cén fáth nach bhfuil an obair?
[Mac léinn] Tá sé dhá argóint éagsúla. >> Yeah.
Argv [1] ag dul a bheith CS50, agus argv tá [2] ag dul a bheith carraigeacha. Maith go leor.
>> Anois tá ./buggy2 dul chun segfault arís.
In áit a oscailt lena chomhad lárnach, beidh orainn a oscailt suas díreach buggy2 go díreach,
mar sin gdb buggy2.
Anois, má táimid ar siúl ach ár gclár, ansin tá sé ag dul a rá Clár fuair comhartha SIGSEGV,
a bhfuil an segfault comhartha, agus tá sé seo nuair a tharla sé le tarlú.
Ag Breathnú ar an cúl-lorg, feicimid go raibh muid sa oh_no feidhm,
Bhí ar a dtugtar ag an breá úr fheidhm, bhí ar a dtugtar ag an binky feidhme,
Bhí ar a dtugtar ag príomh-.
Is féidir linn a fheiceáil freisin ar na hargóintí ar na feidhmeanna sin.
Ba é an argóint go breá úr agus binky 1.
Má táimid liosta an fheidhm oh_no, feicimid go bhfuil oh_no déanamh ach ruabhric ** s = NULLComment;
* S = "borradh";
Cén fáth a mbeadh a dteipeann orthu?
[Mac léinn] Ní féidir leat dereference téigh an pointeoir null? >> Yeah.
Tá sé seo ag rá ach go bhfuil s NULLComment, is cuma má tharlaíonn go bhfuil a bheith ina ** Char,
a, ag brath ar conas tú a léirmhíniú é, d'fhéadfadh sé a bheith ina pointeoir le pointeoir chuig teaghrán
nó sraith de teaghráin.
Tá sé s NULLComment, mar sin tá * s dereferencing a pointeoir nialasach,
agus mar sin tá sé seo ag dul a tuairteála.
Tá sé seo ar cheann de na bealaí is tapúla is féidir leat a segfault b'fhéidir.
Tá sé seo á dhearbhú ach pointeoir nialasach agus láithreach segfaulting.
Sin an méid a bhfuil oh_no a dhéanamh.
Má théann muid suas amháin fráma, ansin táimid ag dul chun dul isteach ar an fheidhm a dtugtar oh_no.
Gá dom a dhéanamh go síos.
Mura bhfuil tú dul isteach i ordú agus bhuail tú díreach isteach arís,
beidh sé arís ach an ordú roimhe sin a bhí ar siúl agat.
Tá muid i bhfráma 1.
Liostáil seo fráma, a fheicimid anseo go bhfuil ár fheidhm.
Is féidir leat a bhuail liosta arís, nó is féidir liosta a dhéanamh 20 tú, agus beidh liosta níos mó é.
Deir an breá úr feidhm más rud é i 1, ansin téigh chuig an fheidhm oh_no,
eile dul go dtí an fheidhm slinky.
Agus tá a fhios againn go bhfuil i 1 mar gheall orainn a tharlóidh a fheiceáil suas anseo
Bhí ar a dtugtar go breá úr leis an argóint 1.
Nó is féidir leat a dhéanamh a phriontáil i agus beidh sé a rá go bhfuil i 1.
Táimid faoi láthair i breá úr, agus má théann muid suas eile fráma, tá a fhios againn beidh muid ag deireadh suas i binky.
Suas. Anois, tá muid i binky.
Liostáil an fheidhm seo - ar an liosta ó roimh ghearradh leath mé amach -
Thosaigh sé amach mar más rud é i 0, ansin táimid ag dul a ghlaoch air oh_no, glaoch eile breá úr.
Tá a fhios againn a bhí mé 1, agus mar sin ar a dtugtar breá úr.
Agus anois táimid ar ais i is mó, agus is mó tá sé ag dul ach a bheith slánuimhir i = Rand ()% 3;
Go bhfuil dul díreach a thabhairt duit uimhir randamach go bhfuil ceachtar 0, 1, nó 2.
Tá sé seo ag dul binky chun glaoch leis an uimhir, agus beidh sé ar ais 0.
Ag Breathnú ar an seo,
ach ag siúl tríd an gclár de láimh gan rith é láithreach,
go mbeadh tú a shocrú le pointe sos ag mó, rud a chiallaíonn go nuair a ritheann muid ar an gclár
Ritheann do chlár go dtí amas sé pointe sos.
Mar sin, reáchtáil an chláir, beidh sé ar siúl agus ansin beidh bhuail an fheidhm is mó é agus stop a rith.
Anois, tá muid taobh istigh de is mó, agus tá céim nó eile ag dul go dtí linn a thabhairt chuig an chéad líne eile de chód.
Is féidir leat a dhéanamh céim nó eile.
Bualadh eile, anois tá mé leagtha amach chun Rand ()% 3, ionas gur féidir linn a phriontáil ar luach i,
agus beidh sé a rá go bhfuil i 1.
Anois, a dhéanann sé cuma cé acu a úsáidimid eile nó céim.
Buille faoi thuairim mé mattered sé ar an cheann roimhe sin, ach ba mhaith linn ag iarraidh úsáid a bhaint as seo chugainn.
Má úsáidimid céim, céim muid isteach an fheidhm, rud a chiallaíonn breathnú ar an rud iarbhír
go atá ag tarlú taobh istigh de binky.
Má úsáidimid seo chugainn, ansin ciallaíonn sé dul thar an fheidhm
agus dul díreach chuig an líne eile de chód in ár phríomhfheidhm.
Ceart anseo ar an líne seo, bhí mé ag nuair a dúirt sé Rand ()% 3;
má rinne mé céim, go mbeadh sé dul isteach i bhfeidhm Rand
agus féach ar céard atá ag tarlú ann, agus raibh mé in ann céim trí fheidhm Rand.
Ach ní féidir liom cúram faoi an fheidhm Rand.
Ba mhaith liom ach chun dul go dtí an chéad líne eile de chód i is mó, mar sin a úsáid mé seo chugainn.
Ach anois is féidir liom cúram faoi an fheidhm binky, mar sin ba mhaith liom a dlús a chur isteach sin.
Anois, tá mé i binky.
Is é an chéad líne de chód ag dul a rá más rud é (i == 0), a ghlacadh mé ar chéim,
feicimid muid suas go deireadh ag breá úr.
Má rudaí liosta againn, feicimid go sheiceáil sé i = 0.
Níl mé cothrom le 0, mar sin chuaigh sé leis an riocht eile,
atá ag dul chun glaoch breá úr (i).
D'fhéadfá a fháil ar dhaoine eatarthu.
Má tá tú ach breathnú ar na línte go díreach, d'fhéadfá smaoineamh más rud é (i == 0),
ceart go leor, ansin ghlac mé céim agus anois tá mé ag breá úr (i),
d'fhéadfá smaoineamh nach mór i gceist = 0 nó rud éigin.
Uimh Ciallaíonn sé ach go bhfuil a fhios is féidir é a bata díreach leis an breá úr líne (i).
Toisc nach bhfuil mé 0, nach bhfuil an chéad chéim eile dul go dtí deireadh ag an duine eile.
Ní eile ar líne tá sé ag dul chun stop a chur ag.
Tá sé seo ag dul go díreach chun dul go dtí an chéad líne eile is féidir é a fhorghníomhú i ndáiríre, atá breá úr (i).
Cora, i Dinky (i), feicimid más rud é (i == 1).
Déanann muid a fhios i = 1, mar sin nuair a chéim againn, tá a fhios againn táimid ag dul chun deireadh suas i oh_no
mar gheall ar glaonna i = 1 an oh_no fheidhm, ar féidir leat dlús a chur isteach,
atá ag dul a shocrú ruabhric ** s = nialasach agus láithreach "borradh".
Agus ansin ag lorg iarbhír ar chur i bhfeidhm buggy2,
seo, atá ag éirí liom ach uimhir randamach - 0, 1, nó 2 - glaoch binky,
agus má tá mé 0 iarrann sé oh_no, eile iarrann sé breá úr, a thagann ar bun anseo.
Más rud é i 1, glaoch oh_no, glaoigh eile slinky, a teacht suas anseo,
más rud é i 2, glaoigh oh_no.
Ní dóigh liom go fiú tá bealach -
An bhfuil aon duine a fheiceáil ar bhealach seo a dhéanamh ar chlár nach mbeidh segfault?
Toisc mura bhfuil mé ag iarraidh rud éigin, má tá mé 0, beidh tú segfault láithreach,
eile a théann tú le feidhm a má tá mé 1 tú segfault,
eile a théann tú le feidhm i gcás má tá mé 2 tú segfault.
Mar sin, is cuma cad a dhéanann tú, is féidir leat segfault.
>> Buille faoi thuairim mé bealach amháin a shocrú go mbeadh sé in ionad a dhéanamh ruabhric ** s = NULLComment,
d'fhéadfaí tú a malloc spás le haghaidh an teaghrán.
D'fhéadfadh muid a dhéanamh malloc (deachúlach) - Is uimhir cad é?
[Mac léinn] (ruabhric) * 5? >> An bhfuil seo cosúil ceart?
Tá mé ag glacadh leis go mbeidh an obair seo má bhí ar siúl mé i ndáiríre é, ach nach bhfuil sé cad mé ag lorg.
Féach ar an gcineál s. A ligean ar chur * slánuimhir, agus mar sin o * x.
Ba mhaith liom a dhéanamh malloc (deachúlach (o)).
Nó má bhí mé le sraith de 5, ba mhaith liom a dhéanamh (deachúlach (o) * 5);
Cad a tharlaíonn má tá mé ** o?
Bheadh ​​Cad malloc?
[Mac léinn] Méid an pointeoir. >> Yeah. (Is uimhir (o *));
Rud céanna síos anseo.
Ba mhaith liom (Is uimhir (Char *));
Tá sé seo ag dul spás a leithdháileadh le haghaidh an pointeoir go pointe le "borradh".
Ní féidir liom gá spás a leithdháileadh le haghaidh "borradh" féin
toisc go bhfuil an bunúsach comhionann le méid a dúirt mé roimh
de ruabhric * x = "borradh".
"Borradh" ann cheana. A tharlaíonn sé a bheith ann sa réigiún inléite amháin de chuimhne.
Ach tá sé ann cheana, rud a chiallaíonn an líne de chód, más rud é s ** Char,
ansin * s * ruabhreac agus tú ag leagan an * Char a chur in iúl le "borradh".
Má bhí mé a chóipeáil "borradh" isteach s, ansin ba mhaith liom a dháileadh le haghaidh s.
Feicfidh mé a dhéanamh * s = malloc (deachúlach (ruabhric) * 5);
Cén fáth 5?
Cén fáth nach bhfuil 4? Breathnaíonn sé cosúil le "borradh" Is é 4 carachtair. >> [Mac léinn] An carachtar nialasach.
Yeah. Gach ceann de do chuid teaghráin ag dul go mór ar an carachtar nialasach.
Anois is féidir liom a dhéanamh rud éigin cosúil le strcat - Cad é an fheidhm chun chóipeáil teaghrán?
[Mac léinn] cpy? >> Strcpy.
strcpy fear.
Mar sin, strcpy nó strncpy.
strncpy bhfuil beagán níos sábháilte toisc gur féidir leat a shonrú go díreach cé mhéad carachtair,
ach anseo nach ndéanann sé ábhar mar tá a fhios againn.
Mar sin, strcpy agus táim i na hargóintí.
Is é an chéad argóint ár gceann scríbe.
Is é an dara hargóint ár fhoinse.
S Táimid ag dul a chóipeáil isteach inár * scríbe an pointeoir "borradh".
Cén fáth gur mhaith leat é seo a dhéanamh le strcpy seachas díreach cad a bhí againn roimh
de * s = "borradh"?
Tá cúis b'fhéidir gur mhaith leat é seo a dhéanamh, ach cad é an gcúis sin?
[Mac léinn] Más mian leat rud éigin a athrú i "borradh". >> Yeah.
Anois is féidir liom a dhéanamh rud éigin cosúil le s [0] = 'X';
mar gheall ar phointí s ar an gcarn agus an spás ar an gcarn go bhfuil s dírithe ar
Is pointeoir le spás níos mó ar an gcarn, a bhfuil a stóráil "borradh".
Dá bhrí sin tá an chóip seo de "borradh" atá á stóráil i gcarn.
Tá go teicniúil dhá chóip de "borradh" in ár gclár.
Níl an chéad cheann a tá tugtha díreach ag síor an teaghrán "borradh",
agus an dara cóip de "borradh", a cruthaíodh strcpy an chóip de "borradh".
Ach tá an cóip de "borradh" atá á stóráil ar an gcarn, agus an gcarn go bhfuil tú é a athrú.
Níl an gcarn inléite amháin, ciallaíonn ionas go mbeidh go s [0]
ag dul chun ligean duit a athrú ar an luach "borradh".
Tá sé seo ag dul chun ligean duit a athrú leis na carachtair.
>> Ceisteanna?
Maith go leor.
>> Bogadh ar aghaidh go dtí buggy3, gdb ligean buggy3.
Táimid ag reáchtáil ach é agus a fheiceann muid muid a fháil segfault.
Má táimid cúl-lorg, níl ach dhá feidhmeanna.
Má théann muid suas i ár bhfeidhm is mó, feicimid go segfaulted muid ag an líne.
Mar sin, ag breathnú díreach ag an líne seo, le haghaidh (slánuimhir líne = 0; fgets an stuif a dhéanann NULLComment nach ionann;
líne + +).
Bhí ar a dtugtar ár fráma roimhe _IO_fgets.
Feicfidh tú a fheiceáil go bhfuil a lán le tógtha-i bhfeidhmeanna C,
nuair a gheobhaidh tú an segfault, beidh ainmneacha fheidhm i ndáiríre cryptic
mar seo _IO_fgets.
Ach tá go bhfuil dul chun bhaineann leis an nglao fgets.
Áit éigin taobh istigh anseo, tá muid ag segfaulting.
Má táimid ar na hargóintí a fgets, is féidir linn a phriontáil maolán.
A ligean ar a phriontáil mar - Ó, uimh.
Níl Priontáil ag dul ag obair go díreach mar ba mhaith liom é.
Ligean ar breathnú ar an gclár iarbhír.
Is Mhaoláin sraith carachtar. Tá sé sraith carachtar 128 carachtar.
Mar sin, nuair a rá liom Maolán a phriontáil, tá sé ag dul i gcló iad siúd 128 carachtair,
a buille faoi thuairim mé é a bhfuil súil leis.
Cad Bhí mé ag lorg go bhfuil a phriontáil ar an seoladh Maolán,
ach ní a insint go mór liom i bhfad.
Mar sin, nuair a tharlóidh mé a rá suas anseo x Maolán, taispeánann sé dom 0xbffff090,
a bhfuil, más cuimhin leat as luaithe nó pointe éigin, bíonn Oxbffff a bheith ina réigiún Stack-ish.
Bíonn an chairn a thosú áit éigin díreach faoi bhun 0xc000.
Díreach ag féachaint ar an seoladh seo, tá a fhios agam go bhfuil maoláin ag tarlú ar an chruach.
Restarting mo chlár, á reáchtáil, suas, Maolán chonaic muid go raibh an seicheamh seo de charachtair
go bhfuil go leor brí i bhfad.
Ansin priontáil comhad, cad comhad cuma mhaith?
[Mac léinn] nialasacha. >> Yeah.
Tá an comhad ina de * COMHAD cineál, mar sin tá sé pointeoir,
agus is é luach na pointeoir nialasach.
Dá bhrí sin tá fgets dul chun iarracht a léamh ón pointeoir ar bhealach indíreach,
ach d'fhonn rochtain a fháil ar an pointeoir, tá sé le P leis na roghanna é.
Nó, d'fhonn rochtain a fháil ar cad ba cheart é a bheith dírithe ar, dereferences sé é.
Mar sin, tá dereferencing sé pointeoir nialasach agus segfaults.
Raibh mé in ann a bheith atosú sé ann.
Má táimid bhriseadh ag ár príomh phointe agus a rith,
Is é an chéad líne de chód ruabhric * ainm = "nonexistent.txt";
Ba chóir a thugann leid mór go leor mar a cén fáth go mainneoidh an gclár seo.
Clóscríobh eile a thugann dom ar an chéad líne eile, áit a oscailt mé an comhad seo,
agus ansin mé a fháil láithreach i ár líne, áit nuair a bhuail mé amach romhainn, tá sé ag dul segfault.
An bhfuil aon duine ag iarraidh a caith amach fáth a d'fhéadfadh muid a bheith segfaulting?
Ní [mac léinn] chomhad ann. >> Yeah.
Tá sé seo ceaptha a bheith ina leid
go bhfuil aon uair tá tú ag oscailt comhad gá duit a sheiceáil go bhfuil an comhad i ndáiríre.
Mar sin anseo, "nonexistent.txt";
Nuair a ainm fopen le haghaidh léamh, ní mór dúinn ansin a rá
más rud é (comhad == NULLComment) agus a rá printf ("Níl an comhad ann!"
nó - níos fearr fós - ainm comhaid); ais 1;
Mar sin anois táimid ag seiceáil a fheiceáil má tá sé NULLComment
roimh iarbhír ag leanúint agus ag iarraidh a léamh ón chomhad.
Is féidir linn a remake sé ach a fheiceáil go bhfuil go n-oibríonn.
I gceist agam a chur san áireamh ar líne nua.
Mar sin, anois nach bhfuil nonexistent.txt ann.
Ba chóir duit seiceáil i gcónaí le haghaidh an saghas rud.
Ba chóir duit seiceáil i gcónaí a fheiceáil má fhilleann fopen NULLComment.
Ba chóir duit seiceáil i gcónaí chun a chinntiú nach malloc ais NULLComment,
nó eile agat segfault.
>> Anois buggy4.c.
Rith. Tá mé ag guessing tá sé seo ag fanacht le ionchuir nó looping b'fhéidir gan teorainn.
Sea, tá sé looping gan teorainn.
Mar sin, buggy4. Breathnaíonn sé cosúil go bhfuil muid looping gan teorainn.
Is féidir linn a bhriseadh ar mó, á reáchtáil ár gclár.
I gdb, chomh fada agus is an giorrúchán a úsáideann tú gan athbhrí
nó giorrúcháin speisialta a chuireann siad ar fáil duit,
ansin is féidir leat úsáid a n úsáid a bhaint as eile in ionad a bheith le cineál amach romhainn léir ar an mbealach.
Agus anois go bhfuil mé bhuail n uair amháin, is féidir liom a bhuail díreach isteach a choinneáil ag dul amach romhainn
in ionad a bheith a bhuail n Cuir isteach, n Cuir isteach, n Iontráil.
Breathnaíonn sé cosúil Tá mé i roinnt de chineál ar lúb a tá leagan eagar [i] chun 0.
Breathnaíonn sé cosúil le riamh tá mé briseadh amach as seo le haghaidh lúb.
Má chuirtear i gcló mé i, mar sin tá mé 2, ansin beidh mé ag dul amach romhainn.
Beidh mé a phriontáil i, tá mé 3, ansin beidh mé ag dul amach romhainn.
Feicfidh mé a phriontáil i agus tá mé 3. Next, a phriontáil i, tá mé 4.
I ndáiríre, tá cló deachúlach (eagar), agus mar sin méid eagar 20.
Ach tá sé cosúil Tá roinnt orduithe gdb speisialta chun dul go dtí go dtarlaíonn.
Tá sé cosúil le leagan síos mar choinníoll ar luach an athróg. Ach ní féidir liom cuimhneamh ar cad a bhfuil sé.
Mar sin, má táimid ag dul a choinneáil -
Cad a bhí á rá agat? Cad a rinne tú a thabhairt suas?
[Mac léinn] An bhfuil taispeáint i add - >> Yeah. Mar sin, a thaispeáint gur féidir liom cabhrú.
Má táimid thaispeáint ach i, beidh sé a chur suas anseo cad é an luach i
mar sin ní dóigh liom go bhfuil a phriontáil sé amach gach uair.
Má tá muid a choinneáil ach ag dul amach romhainn, feicimid 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5.
Rud ag dul terribly mícheart, agus i á athshocrú chun 0.
Ag Breathnú ar an buggy4.c, féach againn ar fad a tharlaíonn go bhfuil eagar o [5];
haghaidh (i = 0; i <= deachúlach (eagar); i + +)
eagar [i] = 0;
Cad a fheicimid go bhfuil mícheart anseo?
Mar leid, nuair a bhí mé ag déanamh an gdb buggy4 - a ligean ar bhriseadh is mó, á reáchtáil -
I raibh cló deachúlach (eagar) ach a fheiceáil cad é an coinníoll áit ar cheart dom briseadh ar deireadh thiar amach.
Cá bhfuil mé? An raibh mé ag siúl?
Ní raibh mé a dhearbhú go fóill.
Mar sin, is féidir MÉID a phriontáil (eagar) agus sin 20,
a bhfuiltear ag súil ó mo sraith de mhéid 5 agus tá sé de 5 slánuimhreacha,
mar sin ba chóir go mbeadh an rud ar fad 5 * Is uimhir (o) bearta, i gcás bíonn deachúlach (o) a 4.
Dá bhrí sin tá deachúlach (eagar) 20.
Cad ba cheart é seo a?
[Mac léinn] Roinnte deachúlach (o). >> Yeah, / Is uimhir (o).
Breathnaíonn sé cosúil le níl fadhb fós anseo. I mo thuairimse, ba chóir é seo a bheith díreach <
ós rud é tá sé deas i gcónaí i bhfad riamh <agus <=.
Anois, a ligean smaoineamh ar cén fáth go raibh sé seo briste i ndáiríre.
An bhfuil duine ar bith buille faoi thuairim cén fáth go raibh mé a athshocrú chun 0 trí gach atriall den lúb?
Is é an rud amháin taobh istigh de anseo go bhfuil ag tarlú go eagar [i] á shocrú chun 0.
Mar sin, ar bhealach, tá an líne de chód cúis lenár n slánuimhir liom a shocrú chun 0.
Níorbh fhéidir [mac léinn] sé a bheith mar tá sáraitheach é an gcuimhne ar an chuid i
nuair is cuí léi tá sé an chéad bhall eile eagar? >> [Bowden] Tá.
Nuair a táimid ag dul thar an deireadh ár sraith,
Tá ar bhealach go mbeidh spás go bhfuil muid ag sáraitheach sáraitheach an luach i.
Agus mar sin má táimid i buggy4, briseadh is mó, á reáchtáil,
a ligean ar a phriontáil seoladh i.
Breathnaíonn sé cosúil go bhfuil sé bffff124.
Anois, a ligean taispeáin seoladh sraith [0]. 110.
Cad mar gheall ar [1]? 114.
[2], 118.
11c, 120. eagar [5] Tá bfff124.
Mar sin, sraith [5] Tá an seoladh céanna i, rud a chiallaíonn go bhfuil eagar [5] i.
Má tá siad an seoladh céanna, tá siad an rud céanna.
Mar sin, nuair a leag muid sraith [5] chun 0, tá muid ag leagan síos mé 0.
Agus má cheapann tú faoi seo i dtéarmaí an chairn,
slánuimhir i dhearbhú den chéad uair, rud a chiallaíonn go bhfaigheann i roinnt spáis ar an chruach.
Ansin eagar [5] a leithdháileadh, agus mar sin ansin 20 bytes a leithdháileadh ar an chruach.
Mar sin, faigheann i leithroinnt ar an gcéad, ansin na 20 bytes a fháil leithdháileadh.
Mar sin, a tharlaíonn i gceart roimh an eagar,
agus mar gheall ar an mbealach seo, mar a dúirt mé an tseachtain seo caite, nuair a fhásann go teicniúil an chairn síos,
nuair innéacs tú isteach eagar, táimid ag ráthú go bhfuil an seasamh 0 sa réimse
i gcónaí a tharlaíonn roimh an chéad staid sa eagar.
Tá an cineál conas a tharraing mé an tseachtain seo caite.
Fógra go bhfuil ar bun againn seoladh 0 agus ag barr againn Max seoladh.
Tá an chairn ag fás i gcónaí síos.
Ligean le rá againn a dháileadh i.
Leithdháileadh muid slánuimhir i, rud a chiallaíonn ligean ach a rá suas anseo slánuimhir i Faigheann leithdháilte.
Ansin againn leithdháileadh ár sraith de 5 slánuimhreacha, rud a chiallaíonn go thíos go bhfuil,
ós rud é go bhfuil an chairn ag fás síos, na 5 slánuimhreacha a fháil leithdháileadh.
Ach mar gheall ar conas a oibríonn eagair, táimid ag ráthú go bhfuil an chéad staid sa réimse
i gcónaí ag seoladh níos lú ná an dara rud ar an eagar.
Mar sin, tá 0 seasamh eagar i gcónaí le tarlú chéad uair i gcuimhne,
cé go bhfuil 1 seasamh eagar a tharlóidh ina dhiaidh sin
agus tá 2 seasamh eagar a tharlóidh ina dhiaidh sin,
rud a chiallaíonn go mbeadh 0 seasamh eagar tarlú áit éigin síos anseo,
Bheadh ​​1 seasamh eagar tarlú thuas go
mar ciallaíonn bogadh suas seoltaí níos airde toisc go bhfuil an seoladh is mó suas anseo.
Mar sin, sraith [0] síos anseo, eagar [1] suas anseo, eagar [2] suas anseo, eagar [3] suas anseo.
Fógra conas roimh leithdháileadh againn slánuimhir i léir ar an mbealach suas anseo,
agus sinn ag dul a thuilleadh agus a thuilleadh i ár sraith, tá muid ag éirí níos dlúithe agus níos cóngaraí dár slánuimhir i.
Tharlaíonn sé ach ionas go mbeidh sraith [5], atá ar cheann seasamh thar ár sraith,
é go díreach nuair is slánuimhir a tharla mé a bheith ar fáil.
Mar sin, go bhfuil an pointe nuair a tharlóidh dúinn a bheith ag bualadh an spás ar an chruach
Leithdháileadh gur le haghaidh slánuimhir i, agus táimid ag leagan síos go dtí 0.
>> Sin é an chaoi go n-oibríonn. Ceisteanna? Yeah.
[Mac léinn] Ná bac leis. Maith go leor.
[Mac léinn] Conas a dhéanann tú a sheachaint na saghas earráidí?
Tá na saghas earráidí? Ná húsáid C mar do teanga cláir.
Bain úsáid as teanga go bhfuil bounds eagar a sheiceáil.
Chomh fada is a bhfuil tú go cúramach, is gá duit ach a sheachaint ag dul thar an bounds de do eagar.
[Mac léinn] Mar sin anseo nuair a chuaigh muid thar an bounds de do eagar -
[Bowden] Sin an áit a thosú rudaí ag dul mícheart. >> [Mac léinn] Oh, maith go leor.
Chomh fada is a fhanann tú laistigh den chuimhne leithdháilte le haghaidh do sraith, tá tú breá.
Ach C aon seiceáil earráid. Má dhéanann mé sraith [1000], beidh sé gladly a mhodhnú ach is cuma cad a tharlaíonn -
Téann sé go dtí tús an eagar, ansin téann sé 1,000 post i ndiaidh agus leagann sé 0.
Nach ndéanann sé aon seiceáil go OH, ní hionann sin i ndáiríre 1000 rudaí ann.
1000 ar bhealach níos faide ná cad ba chóir dom a bheith ag athrú,
cé go Java nó rud éigin go mbainfidh tú a fháil eagar as innéacs bounds
nó innéacs as eisceacht bounds.
Sin an fáth a bhfuil a lán de na teangacha leibhéal níos airde na rudaí seo
i gcás má théann tú thar an bounds an eagar, theipeann ort
ionas nach féidir leat rudaí a athrú ó thíos tú
agus ansin a théann rudaí i bhfad níos measa ná díreach ag fáil eisceacht
ag rá go ndeachaigh tú thar dheireadh na eagar.
[Mac léinn] Agus ba chóir sin ní mór dúinn a athrú ach an <= dtí díreach <? >> [Bowden] Yeah.
Ba chóir a thabhairt <deachúlach (eagar) / deachúlach (o);
ós rud é go deachúlach (eagar) 20, ach ba mhaith linn ach 5. >> [Mac léinn] Ceart.
Ceisteanna níos mó? Maith go leor.
>> [Mac léinn] Tá mé ceist. >> Yeah.
[Mac léinn] Cad é an athróg eagar iarbhír?
[Bowden] Cosúil cad is eagar?
Is Eagar féin siombail.
Tá sé ach an seoladh an tús an 20 bytes go bhfuil muid ag tagairt.
Is féidir leat smaoineamh ar é mar pointeoir, ach tá sé ina pointeoir tairiseach.
Chomh luath agus rudaí a fháil le chéile, nach bhfuil an raon athróg ann níos mó.
[Mac léinn] Mar sin, ní conas a fháil ar an méid eagar?
Tagraíonn Méid eagar le méid sin bloc go dtagraíonn an siombal a.
Nuair a dhéanann mé rud éigin cosúil le printf ("% p \ n", eagar);
a ligean ar rith sé.
Cad a rinne mé díreach tar éis cearr?
Eagar 'eagar' dhearbhú anseo.
Ó, suas anseo.
Clang Is cliste, agus a tharlaíonn sé a thabhairt faoi deara gur dhearbhaigh mé an sraith mar 5 eilimintí
ach tá mé ag innéacsú i seasamh 1000.
Is féidir é sin a dhéanamh mar go bhfuil seo ach tairisigh.
Is féidir é ach dul go dtí seo i noticing go bhfuil mé ag dul thar na teorainneacha ar an eagar.
Ach fógra roimh nuair a bhí againn liom a bheith mícheart,
ní féidir é a chinneadh, b'fhéidir, cé mhéad luachanna d'fhéadfadh a chur ar aghaidh,
mar sin ní féidir é a chinneadh go raibh sé ag dul i thar dheireadh na eagar.
Sin díreach clang a bheith cliste.
>> Ach a dhéanamh anois buggy4. Mar sin, cad eile mé ag déanamh mícheart?
Hintuigthe dhearbhú fheidhm leabharlainne 'printf'.
Tá mé ag dul go dtí gur mian a chur san áireamh # .
Maith go leor. Anois reáchtáil buggy4.
Priontáil luach an eagar mar a rinne mé anseo, a phriontáil é mar pointeoir
priontaí rud éigin go Breathnaíonn mar seo - bfb8805c - a bhfuil roinnt seoladh
go bhfuil sa réigiún Stack-ish.
Is é Eagar féin cosúil le pointeoir, ach nach bhfuil sé pointeoir iarbhír,
ós rud é go pointeoir rialta féidir linn a athrú.
Eagar é ach cuid tairiseach. An 20 bloic de chuimhne tosú ag 0xbfb8805c sheoladh.
Mar sin, bfb8805c tríd an seoladh +20--nó buille faoi thuairim mé -20 -
Is léir an chuimhne leithdháilte don eagar.
Eagar, nach bhfuil an athróg féin a stóráil áit ar bith.
Nuair a bhíonn tú ag a thiomsú, an tiomsaitheoir - tonn lámh ar sé -
ach beidh an tiomsaitheoir a úsáid ach nuair a fhios sé eagar a bheith.
Fhios sé nuair a thosaíonn an eagar,
agus mar sin is féidir sé i gcónaí a dhéanamh ach rudaí i dtéarmaí offsets ón tús.
Ní chuireann sé de dhíth athróg féin eagar chun ionadaíocht a dhéanamh.
Ach nuair a dhéanann mé rud éigin cosúil le slánuimhir * eagar p = anois p pointeoir a dhíríonn ar an eagar,
agus anois p bhfuil iarbhír ann ar an chruach.
Tá mé saor in aisce a athrú lch. Is féidir liom a dhéanamh p = malloc.
Mar sin, chuir sé ar dtús chun eagar; anois pointí sé le roinnt spáis ar an gcarn.
Ní féidir liom a dhéanamh eagar; malloc.
Má tá clang cliste, beidh sé yell ag dom ceart as an bat.
I ndáiríre, tá mé cinnte go leor go mbeadh GCC é seo a dhéanamh chomh maith.
Mar sin, cineál eagar 'o [5]' Ní insannta.
Ní féidir leat rud éigin a shannadh do chineál eagar
toisc go bhfuil sraith ach tairiseach.
Is siombail iad na tagairtí sin 20 bytes. Ní féidir liom a athrú.
>> [Mac léinn] Agus ina bhfuil an méid de na eagar stóráil?
[Bowden] Níl sé stóráilte áit ar bith. Tá sé nuair atá sé thiomsú é.
Mar sin, ina bhfuil an méid eagar stóráil?
Is féidir leat úsáid ach amháin deachúlach (eagar) taobh istigh den fheidhm go bhfuil an réimse go bhfuil sí.
Mar sin, má dhéanann mé roinnt fheidhm, foo, agus is féidir liom (slánuimhir eagar [])
printf ("% d \ n", Is uimhir (eagar));
agus ansin síos anseo mé glaoch foo (eagar);
taobh istigh den fheidhm seo - a ligean ar rith sé.
Is é seo an clang a bheith cliste arís.
Tá sé ag insint dom go bhfuil Is uimhir ar paraiméadar fheidhm eagar
Cuirfear ar ais méid '* o'.
Bheadh ​​sé seo earráid más rud é nach bhfuil sé cad a bhí mé a tharlóidh.
A ligean ar dul i ndáiríre as Werror.
Rabhadh. Rabhaidh Tá fíneáil.
Beidh sé le chéile go fóill chomh fada agus tá sé rabhadh.
Tá. / A.out dul i gcló 4.
Is é an rabhadh a bhí a ghintear go táscaire soiléir cad a chuaigh mícheart.
Tá an sraith slánuimhir ag dul díreach a phriontáil Is uimhir (o *).
Fiú má chuir mé sraith [5] i anseo, tá sé fós ag dul díreach a phriontáil Is uimhir (o *).
Mar sin, a luaithe is tú pas a fháil sé isteach ar fheidhm, ar an idirdhealú idir eagair agus leideanna
Is nonexistent.
A tharlaíonn sé seo a bheith ina sraith dearbhaíodh go ar an chruach,
ach chomh luath agus is mar a théann muid go luach, go 0xbf blah, blah, blah isteach an fheidhm,
ansin pointí seo pointeoir leis an eagar ar an chruach.
Mar sin, ciallaíonn sé go bhfuil feidhm Is uimhir amháin san fheidhm gur dearbhaíodh an eagar,
rud a chiallaíonn go nuair a bhíonn tú le chéile an fheidhm seo,
nuair a théann clang tríd an fheidhm seo, Feiceann sé eagar Is sraith slánuimhir de mhéid 5.
Mar sin, ansin a fheiceann sé deachúlach (eagar). Bhuel, sin é 20.
Sin i ndáiríre conas a oibríonn Is uimhir bunúsach le haghaidh beagnach gach cás.
Ní Is uimhir feidhm; tá sé d'oibreoir.
Ní gá duit glaoch ar an fheidhm is féidir MÉID a.
Is uimhir (o), beidh an tiomsaitheoir aistriú go díreach go dtí 4.
Fuair ​​sé? Maith go leor.
>> [Mac léinn] Mar sin, cad é an difríocht idir deachúlach (eagar) i príomhghnéithe agus i foo?
Tá sé seo toisc go bhfuil muid ag rá deachúlach (eagar), atá de * slánuimhir cineál,
de bhrí go bhfuil eagar síos anseo nach * slánuimhir cineál, tá sé le sraith slánuimhir.
>> [Mac léinn] Mar sin má bhí tú an paraiméadar i sraith [] in ionad sraith * o,
a bheadh ​​i gceist go bhféadfaí tú a athrú go fóill eagar mar anois tá sé ina pointeoir?
[Bowden] Cosúil seo? >> [Mac léinn] Yeah. Is féidir leat athrú eagar laistigh d'fheidhm anois?
[Bowden] D'fhéadfaí tú a athrú eagar sa dá chás.
Sa dá de na cásanna sin tá tú saor chun a rá eagar [4] = 0.
[Mac léinn] Ach is féidir leat pointe eagar a dhéanamh ar rud éigin eile?
[Bowden] Oh. Yeah. I gceachtar cás - >> [mac léinn] Yeah.
[Bowden] an t-idirdhealú idir eagar [] agus le sraith * slánuimhir, tá none.
Is féidir leat freisin roinnt sraith iltoiseacha i anseo
do roinnt error áisiúil, ach tá sé fós ach pointeoir.
Ciallaíonn sé seo go bhfuil mé saor in aisce eagar a dhéanamh = malloc (deachúlach (o)); agus anois pointe éigin eile.
Ach díreach mar conas a oibríonn seo go deo agus i gcónaí,
athrú seo sraith trí é a dhéanamh pointe chun rud éigin eile
nach n-athraíonn an eagar síos anseo mar tá sé cóip den argóint,
nach bhfuil sé pointeoir leis an argóint.
Agus i ndáiríre, díreach mar a léiriú níos mó go bhfuil sé díreach mar an gcéanna -
chonaic muid cheana féin cad priontaí eagar priontáil -
cad más rud é phriontáil againn seoladh an eagar nó ar an seoladh an seoladh an eagar
le ceachtar de na?
A ligean ar neamhaird a dhéanamh an gceann seo.
Maith go leor. Tá sé seo breá. Tá sé ag rith anois. / A.out.
Eagar Priontáil, ansin priontáil seoladh an eagar iad, an rud céanna.
Eagar nach bhfuil ach ann.
Fhios sé nuair a bhíonn tú ag priontáil eagar, tá tú ag priontáil an tsiombail a thagraíonn do na 20 beart.
Priontáil an seoladh an eagar, go maith, ní eagar ann.
Ní chuireann sé go mbeadh seoladh, agus mar sin priontaí sé ach an seoladh sin 20 bytes.
Chomh luath agus tú a thiomsú síos, is maith i do buggy4 le chéile. / A.out,
eagar é nonexistent.
Leideanna ann. Nach bhfuil arrays.
Na bloic de chuimhne a ionadaíonn do na eagar fós ann,
ach ní dhéanann an sraith athraitheach agus athróga den chineál ann.
Glacfar iad ar nós na difríochtaí is mó idir eagair agus leideanna
Tá a luaithe is a dhéanann tú glaonna feidhm, níl aon difríocht.
Ach taobh istigh na feidhme go bhfuil an raon féin dhearbhú, oibríonn Is uimhir éagsúil
ós rud é tá tú ag priontáil an méid de na bloic in ionad an méid de na cineál,
agus ní féidir leat é a athrú mar tá sé ina siombail.
Priontáil an rud agus seoladh an rud priontaí an rud céanna.
Agus sin go leor i bhfad é.
[Mac léinn] Níorbh fhéidir leat a rá go bhfuil ceann níos mó ama?
D'fhéadfadh mé caillte rud éigin.
Priontaí eagar Priontáil agus seoladh an eagar an rud céanna,
ach má phriontáil duit pointeoir i gcoinne an seoladh an pointeoir,
priontaí an rud amháin an seoladh ar cad tá tú ag dírithe ar,
an ceann eile priontaí seoladh an pointeoir ar an chruach.
Is féidir leat athrú pointeoir; ní féidir leat athrú siombail eagar.
Agus is é Is uimhir pointeoir ag dul i gcló ar an méid den chineál pointeoir.
Mar sin, o Tá * p deachúlach (p) dul i gcló 4,
ach o eagar [5] Tá cló deachúlach (eagar) dul i gcló 20.
[Mac léinn] Mar sin slánuimhir eagar [5] a phriontáil 20? >> Tá.
Sin an fáth taobh istigh de buggy4 nuair a úsáidtear é a bheith deachúlach (eagar)
seo a bhí á dhéanamh i <20, is é nach cad a bhí againn.
Ba mhaith linn i <5. >> [Mac léinn] Maith go leor.
[Bowden] Agus ansin chomh luath agus a thosaíonn tú ag dul leis na feidhmeanna,
más rud é go raibh muid o * p = eagar;
taobh istigh den fheidhm seo, is féidir linn a úsáid go bunúsach p agus eagar i díreach ar na bealaí céanna,
ach amháin i gcás an fhadhb Is uimhir agus an fhadhb a athrú.
Ach p [0] = 1; mar an gcéanna le rá eagar [0] = 1;
Agus chomh luath agus a deirimid foo (eagar); nó foo (p);
taobh istigh den fheidhm foo, is é seo an glao céanna faoi dhó.
Níl aon difríocht idir an dá glaonna.
>> Tá ag gach duine go maith ar sin? Maith go leor.
Tá 10 nóiméad.
>> Beidh muid iarracht a fháil tríd an gclár seo Typer Hacker,
an láithreán gréasáin seo, a tháinig amach an bhliain seo caite nó rud éigin.
Tá sé ceaptha ach a bheith cosúil le chlóscríobhann tú go randamach agus priontaí sé amach -
Cibé rud a comhad a tharlaíonn sé a bheith luchtaithe cad tá sé cosúil le atá tú ag clóscríobh.
Breathnaíonn sé cosúil le roinnt de chineál cód córas oibriúcháin.
Sin cad ba mhaith linn a chur i bhfeidhm.
Ba chóir duit a bheith inrite dénártha ainmnithe hacker_typer
a thógann san argóint amháin, an comhad a "cineál hacker."
Ba chóir go Ag reáchtáil an inrite soiléir ar an scáileán
agus a phriontáil amach ansin roghnaigh as an gcomhad ritheadh ​​i gach uair an t-úsáideoir cófraí ​​eochair.
Mar sin, is cuma cén eochair tú ar an cnaipe, ba chóir é caith amach agus in ionad carachtar ó na comhaid a phriontáil
is é sin an argóint.
Beidh mé go leor i bhfad a insint duit cad iad na rudaí táimid ag dul go mór a fháil amach.
Ach ba mhaith linn a sheiceáil amach an leabharlann termios.
Ní raibh mé riamh úsáid as an leabharlann i mo shaol ar fad, mar sin tá sé chun críocha an-bheag.
Ach tá sé seo ag dul a bheith ar an leabharlann féidir linn a úsáid le caith amach an carachtar bhuail tú
nuair atá tú ag clóscríobh i caighdeán isteach
Mar sin, hacker_typer.c, agus táimid ag dul a iarraidh a chur san áireamh # .
Ag Breathnú ar an leathanach fear do termios - I'm guessing sé críochfort OS nó rud éigin -
Níl a fhios agam conas é a léamh.
Ag Breathnú ar an seo, a deir sé a chur san áireamh ar na 2 chomhad, mar sin beidh orainn a dhéanamh.
>> An chéad rud ar dtús, ba mhaith linn a ghlacadh i argóint amháin, a bhfuil an comhad ba cheart dúinn a oscailt.
Mar sin, cad ba mhaith liom a dhéanamh? Conas is féidir liom seiceáil a fheiceáil go bhfuil mé argóint amháin?
[Mac léinn] Má ionann argc é. >> [Bowden] Yeah.
Mar sin, más rud é (argc = 2!) Printf ("úsáid:% s [comhad a oscailt]").
Mar sin anois má ritheann liom seo a dhéanamh gan soláthar an dara hargóint - OH, ní mór dom an líne nua -
Feicfidh tú a fheiceáil a deir sé úsáid:. / hacker_typer,
agus ansin ba chóir go mbeadh an dara hargóint an comhad ba mhaith liom a oscailt.
Anois, cad a dhéanfaidh mé?
Ba mhaith liom a léamh ó chomhad seo. Conas is féidir liom a léamh ó chomhad?
[Mac léinn] ar oscailt agat ar dtús. >> Yeah.
Mar sin, fopen. Cad a dhéanann fopen cuma mhaith?
[Mac léinn] Ainm. >> Is é [Bowden] Filename ag dul a bheith argv [1].
[Mac léinn] Agus ansin cad ba mhaith leat a dhéanamh leis é, mar sin an - >> [Bowden] Yeah.
Mar sin, más rud é nach raibh tú cuimhneamh, ach d'fhéadfaí tú a dhéanamh fopen fear,
nuair atá sé ag dul a bheith ina cosán * CONST ruabhric áit a bhfuil cosán ainm comhaid,
Modh * CONST Char.
Má tharlaíonn tú a ní cuimhin cad é modh, ansin is féidir leat breathnú ar mód.
Taobh istigh de leathanaigh fear, is é an carachtar Slais an méid is féidir leat é a úsáid chun cuardach a dhéanamh ar rudaí.
Mar sin, mé cineál / modh chun cuardach a dhéanamh mód.
n agus N cad is féidir leat é a úsáid le timthriall trí na cluichí cuardaigh.
Seo a deir sé na pointí modh argóint teaghrán
tús le ceann de na seichimh seo a leanas.
Mar sin, r, gcomhad téacs Oscailte chun é a léamh. Sin cad ba mhaith linn a dhéanamh.
Le haghaidh léamh, agus ba mhaith liom a stóráil go.
Is é an rud dul chun bheith ina * COMHAD. Anois, cad ba mhaith liom a dhéanamh?
Tabhair dom an dara.
Maith go leor. Anois, cad ba mhaith liom a dhéanamh?
[Mac léinn] Seiceáil má tá sé NULLComment. >> [Bowden] Yeah.
Aon uair a oscailt tú comhad, déan cinnte go bhfuil tú go rathúil in ann a oscailt.
>> Anois, ba mhaith liom a dhéanamh go stuif termios áit ar mhaith liom a léamh mo chéad socruithe atá ann faoi láthair
agus a shábháil dóibh siúd i rud éigin, ansin ba mhaith liom a athrú mo suímh
le caith amach aon charachtar gur cineál mé,
agus ansin ba mhaith liom a thabhairt suas chun dáta leis na suímh.
Agus ansin ag deireadh an chláir, ba mhaith liom a athrú ar ais go dtí mo suímh bunaidh.
Mar sin, tá an struct ag dul a bheith de chineál termios, agus mé ag dul a iarraidh dhá cheann de na.
Is é an chéad cheann ag dul a bheith ar mo current_settings,
agus ansin tá siad ag dul a bheith ar mo hacker_settings.
Gcéad dul síos, tá mé ag dul go dtí mhaith a shábháil mo suímh reatha,
ansin tá mé ag dul go dtí mhaith a thabhairt cothrom le dáta hacker_settings,
agus ansin ar bhealach ag deireadh mo chlár, ba mhaith liom dul ar ais chuig suímh reatha.
Mar sin, shábháil socruithe reatha, ar an mbealach a oibríonn, termios fear againn.
Feicimid go bhfuil an tcsetattr slánuimhir, slánuimhir tcgetattr.
Pas a fháil mé i struct termios ag a pointeoir.
Is é an bealach seo cuma - I've dearmad cheana féin cad a bhí ar a dtugtar an fheidhm.
Cóipeáil agus greamaigh.
Mar sin, tcgetattr, ansin ba mhaith liom a pas a fháil sa struct go bhfuil mé ag shábháil ar an eolas i,
atá ag dul a bheith current_settings,
agus is é an chéad argóint an tuarascálaí comhaid le haghaidh an rud ba mhaith liom a shábháil na tréithe.
Cad é an tuarascálaí comhaid atá cosúil le am ar bith a oscailt tú comhad, faigheann sé tuarascálaí comhaid.
Nuair a bheidh mé fopen argv [1], faigheann sé an tuarascálaí comhaid a bhfuil tú ag tagairt
aon uair is mian leat a léamh nó a scríobh dó.
Ní sin an tuarascálaí comhaid mhaith liom a úsáid anseo.
Tá trí tuairisceoirí comhad a bhfuil tú de réir réamhshocraithe,
atá caighdeánach i, amach caighdeánach, agus earráid caighdeánach.
De réir réamhshocraithe, Sílim go bhfuil sé caighdeánach i bhfuil 0, tá caighdeán amach 1, agus is earráid chaighdeánach 2.
Mar sin, cad a dhéanfaidh mé ag iarraidh a athrú na socruithe?
Ba mhaith liom a athrú ar an socruithe uair a bhuail mé le carachtar,
Ba mhaith liom é le caith an carachtar ar shiúl in ionad í a phriontáil ar an scáileán.
Cén sruth - caighdeán i, amach caighdeánach, nó earráid chaighdeánach -
fhreagraíonn do rudaí nuair a chlóscríobh mé ag an méarchlár? >> [Mac léinn] Caighdeán isteach >> Yeah.
Mar sin, is féidir liom a dhéanamh ceachtar 0 nó is féidir a dhéanamh stdin mé.
Tá mé ag dul an current_settings de chaighdeán isteach
>> Anois, ba mhaith liom a thabhairt cothrom le dáta leis na suímh,
mar sin den chéad uair beidh mé a chóipeáil isteach i hacker_settings cad iad mo current_settings.
Agus conas is structs oibre beidh sé cóip amháin.
Seo cóipeanna gach ceann de na réimsí, mar a bheifeá ag súil.
>> Anois, ba mhaith liom thabhairt cothrom le dáta roinnt de na réimsí sin.
Ag Breathnú ar an termios, ba mhaith leat a léamh trí go leor de seo
ach a fheiceáil cad ba mhaith leat a lorg,
ach go bhfuil na bratacha bhfuil tú ag dul go dtí gur mian a chuardach le haghaidh macalla,
mar sin déan macalla de charachtair ionchur Echo.
An Chéad ba mhaith liom a shocrú - I've cheana dearmad cad iad na réimsí sin.
Tá sé seo conas mar a bhreathnaíonn an struct mhaith.
Mar sin, modhanna ionchur I mo thuairimse, ba mhaith linn a athrú.
Beidh muid ag breathnú ar an réiteach a dhéanamh cinnte go bhfuil cad ba mhaith linn a athrú.
Ba mhaith linn lflag a athrú d'fhonn cosc ​​gá chun breathnú tríd go léir.
Is mian linn a athrú modhanna áitiúla.
Ba mhaith leat a léamh tríd an rud ar fad a thuiscint i gcás ina mbaineann gach rud
gur mian linn a athrú.
Ach tá sé taobh istigh de mhodhanna áitiúla áit táimid ag dul a iarraidh a athrú sin.
Mar sin, tá hacker_settings.cc_lmode cad sé ar a dtugtar.
c_lflag.
Tá sé seo nuair a fháil againn i na hoibreoirí bitwise.
Táimid de chineál ar lasmuigh den am, ach beidh muid ag dul tríd sé mear fíor.
Tá sé seo nuair a fháil againn i na hoibreoirí bitwise,
nuair I mo thuairimse, a dúirt mé uair amháin fada ó shin go bhfuil aon uair a thosaíonn tú ag déileáil le bratacha,
tú ag dul a bheith ag baint úsáide bitwise oibreoir go leor.
Comhfhreagraíonn gach giotán ar an bhratach a éigin de iompar.
Mar sin anseo, tá an bhratach a bunch de rudaí éagsúla, i gcás ina chiallaíonn gach ceann acu rud éigin difriúil.
Ach tá cad ba mhaith liom a dhéanamh dul díreach in aice leis an beagán a fhreagraíonn do ECHO.
Mar sin, chun dul go amach a dhéanamh I & = ¬ ECHO.
I ndáiríre, Sílim go bhfuil sé cosúil le tECHO nó rud éigin. Tá mé ag dul díreach tar éis a sheiceáil arís.
Is féidir liom termios é. Tá sé ECHO go díreach.
ECHO ag dul a bheith ina giotán amháin.
¬ Tá ECHO ag dul go gciallaíonn gach giotán leagtha go 1, rud a chiallaíonn gach bratach atá leagtha chun fíor
ach amháin i gcás an giotán ECHO.
De réir dar críoch mo bratacha áitiúla leis seo, ciallaíonn sé gach bratach a bhíonn leagtha amach faoi láthair go fíor
leagfar síos go fóill fíor.
Chás go bhfuil mo bratach ECHO leagtha chun fíor, ansin tá sé seo leagtha gá go falsa ar an bhratach ECHO.
Mar sin, casadh an líne de chód díreach in aice leis an bhratach ECHO.
Na línte eile de chód, beidh mé a chóipeáil ach iad ar mhaithe le leas an am agus ansin iad a mhíniú.
Sa réiteach, a dúirt sé 0.
Tá sé níos fearr is dócha a rá go sainráite stdin.
>> Fógra go bhfuil mé ag déanamh chomh maith ECHO | icanon anseo.
Icanon Tagraíonn rud éigin ar leith, rud a chiallaíonn modh Canonical.
Cad iad na modhanna modh Canonical de ghnáth nuair a bhíonn tú ag clóscríobh amach na n-orduithe,
Ní caighdeánach i phróiseáil rud ar bith go dtí go bhuail tú líne nua.
Mar sin, nuair a dhéanann tú GetString, scríobhann tú a bunch de rudaí, ansin bhuail tú líne nua.
Sin é nuair a tá sé a sheoladh chuig caighdeán isteach
Sin an réamhshocraithe.
Nuair a bheidh mé a mhúchadh mód Canonical, anois gach carachtar amháin tú ar an cnaipe
Tá Faigheann cad a phróiseáil, a bhfuil de ghnáth de chineál ar olc mar tá sé mall a phróiseáil na rudaí seo,
agus sin an fáth tá sé go maith a mhaolánú sé i línte ar fad.
Ach ba mhaith liom gach carachtar a phróiseáil
ós rud é nach bhfuil mé ag iarraidh é a fanacht liom a bhuail líne nua
roimh phróiseálfaidh sé na carachtair tá mé ag clóscríobh.
Sé seo casadh as mód Canonical.
An stuif Ciallaíonn ach nuair a phróiseálfaidh sé i ndáiríre carachtair.
Ciallaíonn sé seo iad a phróiseáil láithreach; chomh luath agus tá mé ag clóscríobh iad, iad a phróiseáil.
Agus is é seo an fheidhm atá cothrom le dáta ar mo suímh le haghaidh caighdeán i,
agus a dhéanann modhanna TCSA sé ceart anois.
Na roghanna eile fanacht go dtí go bhfuil gach rud go bhfuil faoi láthair ar an sruth a phróiseáil.
Nach ábhar i ndáiríre.
Díreach ceart anois athrú mo suímh a bheith cuma cad é atá i hacker_typer_settings.
Buille faoi thuairim mé d'iarr mé é hacker_settings, mar sin a ligean sin a athrú.
Athraigh gach rud a hacker_settings.
>> Anois ag deireadh na ár gclár táimid ag dul a iarraidh ar ais
leis an méid atá faoi láthair taobh istigh de normal_settings,
atá ag dul chun breathnú díreach cosúil & normal_settings.
Fógra nach bhfuil mé athrú ar aon cheann de mo normal_settings ó ar dtús ag fáil é.
Ansin a athrú ach iad ar ais, pas mé iad ar ais ag an deireadh.
Ba é seo an nuashonrú. Maith go leor.
>> Anois taobh istigh de anseo beidh mé a mhíniú ach an cód ar mhaithe le leas an am.
Níl sé sin i bhfad cód.
Feicimid léamh againn carachtar as an comhad. Ar a dtugtar againn sé f.
Anois is féidir leat fear fgetc, ach conas a fgetc ag dul a bheith ag obair
bhfuil ach tá sé ag dul a thabhairt ar ais an carachtar go léann tú díreach nó EO,
a fhreagraíonn go dtí deireadh an chomhaid nó roinnt tarlú earráid.
Táimid ag looping, leanúint ar aghaidh léamh carachtar amháin ón gcomhad,
go dtí go bhfaca muid rith amach de charachtair a léamh.
Agus cé tá ag éirí go, fanacht againn ar charachtar singil ó caighdeánach isteach
Gach uair amháin a scríobhann tú rud éigin ag an líne orduithe,
go s léitheoireacht i carachtar ó caighdeánach isteach
Ansin, tá putchar ag dul díreach a chur ar an ruabhreac léamh againn suas anseo ó na comhaid go amach caighdeánach.
Is féidir leat fear putchar, ach tá sé ag cur ach a caighdeán amach, tá sé ag priontáil go carachtar.
D'fhéadfá freisin a dhéanamh ach printf ("% c", c); smaoineamh céanna.
Sin ag dul a dhéanamh an chuid is mó dár gcuid oibre.
>> Is é an rud deireanach táimid ag dul a iarraidh a dhéanamh ach fclose ár comhad.
Mura bhfuil tú fclose, go bhfuil sceitheadh ​​cuimhne.
Is mian linn a fclose an comhad a d'oscail muid ar dtús, agus sílim go bhfuil sé.
Má dhéanaimid sin, fuair mé cheana féin fadhbanna.
A ligean ar a fheiceáil.
Cad a rinne sé gearán a dhéanamh?
Bhíothas ag súil le 'o' ach argóint atá de chineál 'struct _IO_FILE *'.
Beidh muid a fheiceáil má oibríonn go.
Amháin a cheadaítear i C99. Augh. Maith go leor, a dhéanamh hacker_typer.
Anois, a fháil againn cur síos níos úsáidí.
Mar sin, úsáid aitheantóra neamhdhearbhaithe 'normal_settings'.
Ní raibh mé ag glaoch air normal_settings. D'iarr mé air current_settings.
Mar sin a ligean athrú go léir de sin.
Anois, dul argóint.
Feicfidh mé a dhéanamh an 0 do anois.
Maith go leor. . / Hacker_typer cp.c.
Liom freisin nach raibh soiléir ar an scáileán ag an tús.
Ach is féidir leat breathnú ar ais go dtí an leagan fhadhb seo caite a fheiceáil conas tú soiléir ar an scáileán.
Tá sé priontáil ach roinnt carachtair
cé go bhfuil sé seo ag déanamh cad ba mhaith liom a dhéanamh.
Maith go leor.
Agus smaoineamh ar cén fáth seo gá chun a bheith 0 in ionad ionchur caighdeánach,
ar cheart a shainiú # 0,
tá sé seo gearán go -
Sula nuair a dúirt mé go bhfuil tuairisceoirí comhad ach ansin go mbeadh ort freisin do * COMHAD,
Is tuarascálaí comhaid ach slánuimhir amháin,
cé go bhfuil * COMHAD a bunch iomlán de stuif a bhaineann leis.
An chúis is gá dúinn a rá 0 in ionad ionchur caighdeánach
Tá go stdin a * COMHAD a dhíríonn ar an rud go bhfuil tagairt 0 tuarascálaí comhaid.
Mar sin, fiú suas anseo nuair is féidir liom fopen (argv [1], tá mé ag dul a * COMHAD ar ais.
Ach áit éigin sa * COMHAD rud ​​a fhreagraíonn do na tuarascálaí comhaid don chomhad.
Má fhéachann tú ar an leathanach fear do oscailte, mar sin Sílim go mbainfidh tú a dhéanamh fear 3 oscailte - nope -
fear 2 oscailte - yeah.
Má fhéachann tú ar an leathanach oscailte, tá sé oscailte cosúil le fopen leibhéal níos ísle,
agus tá a sheoladh ar ais an tuarascálaí comhaid iarbhír.
fopen a dhéanann a bunch de rudaí ar bharr oscailte,
a ionad ar ais go díreach ar ais tuarascálaí comhaid a COMHAD iomlán * pointeoir
taobh istigh de a bhfuil ár tuarascálaí comhaid beag.
Mar sin, caighdeán i Tagraíonn an rud * COMHAD,
ach Tagraíonn 0 go díreach leis an gcaighdeán tuarascálaí comhaid ann féin.
>> Ceisteanna?
[Gáirí] shéid trí sin.
Gach ceart. Táimid ag déanamh. [Gáirí]
>> [CS50.TV]