1 00:00:00,000 --> 00:00:02,500 [Powered by Google Translate] [Roinn 5 - Níos Compordach] 2 00:00:02,500 --> 00:00:04,690 [Rob Bowden - Ollscoil Harvard] 3 00:00:04,690 --> 00:00:07,250 Is é [seo CS50. - CS50.TV] 4 00:00:08,990 --> 00:00:14,250 >> Mar a dúirt mé i mo ríomhphost, tá a lán de na rudaí is féidir leat é a úsáid 5 00:00:14,250 --> 00:00:17,060 seachas an fearas a dhéanamh i ndáiríre an tacair bhfadhb. 6 00:00:17,060 --> 00:00:19,910 Molaimid a dhéanann tú é i an fearas toisc ansin is féidir linn níos éasca cabhrú leat 7 00:00:19,910 --> 00:00:22,070 agus tá a fhios againn conas a bhíonn gach rud ag dul ag obair. 8 00:00:22,070 --> 00:00:26,950 Ach mar shampla amháin de áit ar féidir leat rudaí a dhéanamh más rud é, a rá, ní gá duit rochtain 9 00:00:26,950 --> 00:00:31,570 le fearas nó ba mhaith leat a bheith ag obair san íoslach Ionad Eolaíochta - 10 00:00:31,570 --> 00:00:33,090 a ndáiríre tá siad an fearas freisin - 11 00:00:33,090 --> 00:00:35,150 más mian leat a bheith ag obair in aon áit. 12 00:00:35,150 --> 00:00:42,370 Tá Sampla amháin is ea an bhfaca tú / chuala SSH? 13 00:00:44,380 --> 00:00:47,780 SSH go bunúsach go díreach mar a nascadh le rud éigin. 14 00:00:47,780 --> 00:00:51,340 I ndáiríre, ceart anois tá mé SSHed isteach an fearas. 15 00:00:51,340 --> 00:00:54,290 Mé riamh ag obair go díreach i an fearas. 16 00:00:55,930 --> 00:01:01,060 Seo é an fearas, agus má fhéachann tú síos anseo a fheiceann tú an seoladh IP. 17 00:01:01,060 --> 00:01:03,650 Mé riamh ag obair i an fearas féin; 18 00:01:03,650 --> 00:01:08,840 Mé ag teacht i gcónaí ar aghaidh go dtí an iTerm2 fuinneog / críochfort fhuinneog. 19 00:01:08,840 --> 00:01:15,910 Is féidir leat SSH chuig an seoladh IP, ssh jharvard@192.168.129.128. 20 00:01:15,910 --> 00:01:20,390 Is cuimhin liom go bhfuil líon an-éasca mar tá sé patrún dá leithéid deas. 21 00:01:20,390 --> 00:01:24,920 Ach beidh a iarraidh orm le haghaidh mo phasfhocal, agus anois tá mé i an fearas. 22 00:01:24,920 --> 00:01:33,060 Go bunúsach, ag an bpointe seo, más rud é oscail tú suas chríochfort taobh istigh den fearas féin, 23 00:01:33,060 --> 00:01:36,350 seo comhéadan, áfach go mbeadh tú a úsáid, díreach mar an gcéanna 24 00:01:36,350 --> 00:01:40,010 mar chomhéadan mé ag baint úsáide as níos mó ná anseo ach anois go bhfuil tú ag SSHed. 25 00:01:42,240 --> 00:01:44,920 Ní gá duit a SSH ar an fearas. 26 00:01:44,920 --> 00:01:52,360 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 - 27 00:01:52,360 --> 00:01:55,020 Oh. Bigger. 28 00:01:55,020 --> 00:02:01,130 Ba chóir do gach duine agaibh a bheith ag cuntais FÁS réamhshocraithe ar na freastalaithe FÁS. 29 00:02:01,130 --> 00:02:06,840 Maidir liom féin, ba mhaith liom SSH go rbowden@nice.fas.harvard.edu. 30 00:02:06,840 --> 00:02:11,610 Tá sé seo ag dul a iarraidh ort go bhfuil an chéad uair, agus a rá leat yes. 31 00:02:11,610 --> 00:02:15,840 Is é mo phasfhocal ag dul ach a bheith ar mo phasfhocal FÁS. 32 00:02:15,840 --> 00:02:22,650 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. 33 00:02:22,650 --> 00:02:28,560 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 34 00:02:28,560 --> 00:02:30,950 a chur isteach i ndáiríre do Leagann fhadhb. 35 00:02:30,950 --> 00:02:34,100 Ach rá nach bhfuil teacht agat ar do fearas. 36 00:02:34,100 --> 00:02:37,910 Ansin, is féidir leat rudaí a dhéanamh, ar nós ar anseo a bheidh sé a rá - 37 00:02:37,910 --> 00:02:42,160 Tá sé seo ach ár rannóg de na ceisteanna. 38 00:02:42,160 --> 00:02:45,070 Beidh sé a iarraidh ort é seo a dhéanamh i an fearas. 39 00:02:45,070 --> 00:02:47,790 Ina áit sin beidh mé a dhéanamh ach é a chur ar an bhfreastalaí. 40 00:02:47,790 --> 00:02:50,560 Tá mé ag dul a unzip sin. 41 00:02:50,560 --> 00:02:55,670 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 42 00:02:55,670 --> 00:02:58,160 nó cibé taobh istigh den fhearas. 43 00:02:58,160 --> 00:03:01,830 Níl tú ag dul go bhfuil go ar an bhfreastalaí FÁS. 44 00:03:01,830 --> 00:03:04,110 Tá sé ar fad ag dul ach a bheith an comhéadan théacsa. 45 00:03:04,110 --> 00:03:09,180 Mar sin, d'fhéadfaí tú ceachtar ceann amháin, déan iarracht a fhoghlaim eagarthóir téacs go bhfuil siad. 46 00:03:09,180 --> 00:03:12,130 Tá siad Nano. 47 00:03:12,130 --> 00:03:14,990 Nano de ghnáth éasca go leor a úsáid. 48 00:03:14,990 --> 00:03:19,470 Is féidir leat úsáid a bhaint do saighde agus cineál de ghnáth. 49 00:03:19,470 --> 00:03:21,250 Mar sin, ní go crua. 50 00:03:21,250 --> 00:03:24,720 Más mian leat a fháil i ndáiríre mhaisiúil is féidir leat úsáid Emacs, 51 00:03:24,720 --> 00:03:29,850 a bhfuil mé nár chóir d'oscail is dócha toisc nach bhfuil a fhios agam fiú conas a dhúnadh Emacs. 52 00:03:29,850 --> 00:03:32,760 Rialú X, Rialú C? Yeah. 53 00:03:32,760 --> 00:03:35,310 Nó is féidir leat úsáid a bhaint VIM, a bhfuil cad agam a úsáid. 54 00:03:35,310 --> 00:03:37,800 Agus mar sin iad siúd do roghanna. 55 00:03:37,800 --> 00:03:43,830 Más rud é nach bhfuil tú ag iarraidh a dhéanamh, is féidir leat freisin, má fhéachann tú ar manual.cs50.net-- 56 00:03:43,830 --> 00:03:45,410 Oh. 57 00:03:45,410 --> 00:03:49,920 Ar PC, is féidir leat úsáid a bhaint as SSH putty, 58 00:03:49,920 --> 00:03:51,940 a bhfuil tú ag dul a bheith a íoslódáil ar leithligh. 59 00:03:51,940 --> 00:03:55,460 Ar Mac, is féidir leat ach ag Críochfort úsáid mainneachtana nó is féidir leat a íoslódáil iTerm2, 60 00:03:55,460 --> 00:03:58,490 atá cosúil le Críochfort, deas mhaisiúil. 61 00:03:58,490 --> 00:04:03,780 Má théann tú chuig manual.cs50.net mbainfidh tú a fheiceáil nasc chuig Notepad + +, 62 00:04:03,780 --> 00:04:07,120 a bhfuil cad is féidir leat é a úsáid ar ríomhaire. 63 00:04:07,120 --> 00:04:13,340 Ligeann sé SFTP tú ó Notepad + +, a bhfuil bunúsach SSH. 64 00:04:13,340 --> 00:04:17,750 Cad beidh sé seo in iúl duit a dhéanamh ná in eagar do chuid comhad go háitiúil, 65 00:04:17,750 --> 00:04:20,670 agus ansin uair is mian leat chun iad a shábháil, beidh sé a shábháil ar nice.fas, 66 00:04:20,670 --> 00:04:23,670 áit ar féidir leat a reáchtáil ansin iad. 67 00:04:23,670 --> 00:04:26,880 Agus is é an comhionann ar Mac ag dul a bheith TextWrangler. 68 00:04:26,880 --> 00:04:28,760 Mar sin, ligeann sé a dhéanann tú an rud céanna. 69 00:04:28,760 --> 00:04:32,800 Ligeann sé duit comhaid in eagar go háitiúil agus iad a shábháil ar do nice.fas, 70 00:04:32,800 --> 00:04:35,730 áit ar féidir leat a reáchtáil ansin iad. 71 00:04:35,730 --> 00:04:40,400 Mar sin, má tá tú bhfostú riamh gan fearas, tá tú na roghanna 72 00:04:40,400 --> 00:04:44,230 go fóill a dhéanamh do Leagann fhadhb. 73 00:04:44,230 --> 00:04:48,250 Is é an fhadhb amháin ag dul a bheith go bhfuil tú ag dul go bhfuil an leabharlann CS50 74 00:04:48,250 --> 00:04:51,580 toisc nach bhfuil nice.fas de réir réamhshocraithe a bheith go. 75 00:04:51,580 --> 00:04:55,970 Is féidir leat a íoslódáil ceachtar an leabharlann CS50 - 76 00:04:55,970 --> 00:04:58,470 Ní dóigh liom gur gá dom go bhfuil ag an bpointe seo. 77 00:04:58,470 --> 00:05:03,270 Is féidir leat a íoslódáil ceachtar an leabharlann CS50 agus é a chóipeáil ar aghaidh go dtí nice.fas, 78 00:05:03,270 --> 00:05:07,450 nó I mo thuairimse, ag an bpointe seo nach bhfuil muid ag úsáid níos mó ar aon nós. 79 00:05:07,450 --> 00:05:12,720 Nó má dhéanaimid, is féidir leat de thuras na huaire ina ionad 80 00:05:12,720 --> 00:05:18,480 an chuir i bhfeidhm na bhfeidhmeanna sa leabharlann CS50 ar aon nós. 81 00:05:18,480 --> 00:05:21,370 Mar sin, níor chóir a bheith go bhfuil i bhfad de srianadh. 82 00:05:21,370 --> 00:05:23,710 Agus sin sin. 83 00:05:26,460 --> 00:05:29,820 >> Feicfidh mé dul ar ais chuig an fearas anois; beidh muid ag déanamh gach rud i an fearas. 84 00:05:29,820 --> 00:05:37,510 Ag Breathnú ar an rannóg ceisteanna, ag an tús, mar a dúirt mé i mo ríomhphost, 85 00:05:37,510 --> 00:05:43,620 ní mór dúinn a labhairt faoi an ceann gearr a bhí ceaptha leat chun féachaint. 86 00:05:43,620 --> 00:05:51,980 Tá an atreorú agus píopaí agus ar na trí cheist. 87 00:05:51,980 --> 00:05:56,070 >> Chun a sruthán a feidhmeanna cosúil le scríobh printf de réir réamhshocraithe? 88 00:05:56,070 --> 00:05:59,130 Mar sin, sruth. Cad is sruth? 89 00:06:06,520 --> 00:06:15,100 Tá sruth bunúsach mar tá sé ach roinnt - 90 00:06:15,100 --> 00:06:21,450 Níl sé fiú ina fhoinse 1s agus 0s. 91 00:06:21,450 --> 00:06:24,920 Is é an sruth tá sé ag iarraidh anseo amach caighdeánach. 92 00:06:24,920 --> 00:06:27,250 Agus is é sin amach caighdeán sruth go bhfuil tú nuair a scríobh sé, 93 00:06:27,250 --> 00:06:30,940 atá sé ar an scáileán. 94 00:06:30,940 --> 00:06:36,860 Amach Standard, trí sruth, ciallaíonn sé leat scríobh díreach 1s agus 0s dó, 95 00:06:36,860 --> 00:06:40,220 agus léann an taobh eile den amach caighdeán díreach ón sruth. 96 00:06:40,220 --> 00:06:43,540 Tá sé díreach ar shraith de 1s agus 0s. 97 00:06:43,540 --> 00:06:45,570 Is féidir leat scríobh chuig srutháin nó is féidir leat léamh ó shruthanna 98 00:06:45,570 --> 00:06:47,950 ag brath ar cad é an sruth i ndáiríre. 99 00:06:47,950 --> 00:06:52,800 Is iad an dá eile sruthanna réamhshocraithe caighdeánach i agus earráid chaighdeánach. 100 00:06:52,800 --> 00:06:57,540 Caighdeán i bhfuil aon uair a dhéanann tú GetString, tá sé ag fanacht chun tú a stuif ionchur. 101 00:06:57,540 --> 00:07:01,570 Mar sin, ag fanacht ar do shon, ag fanacht sé i ndáiríre ar chaighdeán i, 102 00:07:01,570 --> 00:07:04,880 a bhfuil i ndáiríre cad a gheobhaidh tú nuair a scríobhann tú ar an méarchlár. 103 00:07:04,880 --> 00:07:07,530 Tá tú ag clóscríobh i caighdeán isteach 104 00:07:07,530 --> 00:07:10,050 Tá earráid chaighdeánach go bunúsach comhionann le amach caighdeánach, 105 00:07:10,050 --> 00:07:13,280 ach tá sé speisialaithe i nuair a phriontáil duit chuig earráid chaighdeánach, 106 00:07:13,280 --> 00:07:16,770 tú ceaptha a phriontáil ach teachtaireachtaí earráide a ghabhann leis an 107 00:07:16,770 --> 00:07:20,200 ionas gur féidir leat idirdhealú a dhéanamh idir teachtaireachtaí rialta clóite ar an scáileán 108 00:07:20,200 --> 00:07:24,560 i gcoinne teachtaireachtaí earráide ag brath ar cibé chuaigh siad chun amach caighdeánach nó earráid chaighdeánach. 109 00:07:24,560 --> 00:07:28,660 Comhaid freisin. 110 00:07:28,660 --> 00:07:32,440 Atá as Caighdeán, caighdeán i, agus earráid chaighdeánach srutháin díreach speisialta, 111 00:07:32,440 --> 00:07:36,810 ach i ndáiríre aon chomhad, nuair a osclaíonn tú comhad, bíonn sé ina sruth de bytes 112 00:07:36,810 --> 00:07:40,740 áit ar féidir leat léamh ach ón sruth. 113 00:07:40,740 --> 00:07:47,770 Tá tú, don chuid is mó is féidir, ach smaoineamh ar comhad mar shruth na mbeart. 114 00:07:47,770 --> 00:07:51,190 Sin a dhéanamh cad sruthanna siad scríobh chuig réir réamhshocraithe? Amach Simplí. 115 00:07:51,190 --> 00:07:56,980 >> Cad é an difríocht idir> agus >>? 116 00:07:58,140 --> 00:08:03,710 An raibh duine ar bith féachaint ar na físeáin roimh ré? Maith go leor. 117 00:08:03,710 --> 00:08:10,960 > Ag dul a bheith conas a atreorú isteach i gcomhaid, 118 00:08:10,960 --> 00:08:15,240 agus tá sé >> ag dul chomh maith aschur a atreorú isteach i gcomhaid, 119 00:08:15,240 --> 00:08:17,820 ach tá sé ag dul ina áit i gceangal leis an comhad. 120 00:08:17,820 --> 00:08:23,430 Mar shampla, a ligean ar rá liom a tharlóidh dict a bheith ar dheis anseo, 121 00:08:23,430 --> 00:08:27,020 agus is é an stuif ach amháin taobh istigh de dict cat, cat, madra, iasc, madra. 122 00:08:27,020 --> 00:08:31,530 Is é ceann ordú go bhfuil tú ag an líne orduithe cat, 123 00:08:31,530 --> 00:08:34,539 atá ag dul díreach a phriontáil cad atá i gcomhad. 124 00:08:34,539 --> 00:08:40,679 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. 125 00:08:40,679 --> 00:08:46,280 Ciallaíonn sé sin go clóite sé le caighdeán amach cat, cat, madra, madra éisc,. 126 00:08:46,280 --> 00:08:53,240 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. 127 00:08:53,240 --> 00:08:56,460 Glaofaidh mé an comhad comhad. 128 00:08:56,460 --> 00:09:00,320 Mar sin anois má LS mé, beidh mé a fheiceáil go bhfuil mé comhad nua ar a dtugtar comhad. 129 00:09:00,320 --> 00:09:05,700 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. 130 00:09:05,700 --> 00:09:11,040 Mar sin anois má dhéanann mé arís, ansin tá sé ag dul a atreorú ar an aschur i gcomhad, 131 00:09:11,040 --> 00:09:13,930 agus tá mé ag dul go bhfuil an rud céanna cruinn. 132 00:09:13,930 --> 00:09:17,910 Mar sin go teicniúil, overrode sé go hiomlán cad a bhí againn. 133 00:09:17,910 --> 00:09:22,970 Agus beidh orainn a fheiceáil má athraím dict, thóg mé amach madra. 134 00:09:22,970 --> 00:09:29,980 Anois, má táimid cat dict i gcomhad arís, tá muid ag dul go bhfuil an leagan nua le madraí a bhaint. 135 00:09:29,980 --> 00:09:32,400 Mar sin, bíonn ceannas ceann sé go hiomlán é. 136 00:09:32,400 --> 00:09:36,640 Ina áit sin, má úsáidimid >>, tá sé ag dul comhad gceangal. 137 00:09:36,640 --> 00:09:40,860 Anois, ag oscailt comhad, feicimid go bhfuil againn ach an rud céanna i gcló faoi dhó 138 00:09:40,860 --> 00:09:44,920 toisc go raibh sé ann uair amháin, ansin i gceangal muid go dtí an bunaidh. 139 00:09:44,920 --> 00:09:48,130 Mar sin, go bhfuil an méid> agus >> a dhéanamh. 140 00:09:48,130 --> 00:09:50,580 An bhfuil an chéad cheann eile a iarraidh - Ní chuireann sé a iarraidh mar gheall air. 141 00:09:50,580 --> 00:09:59,050 >> Is é an ceann eile go bhfuil muid <, agus má> athsheolaidh amach caighdeánach, 142 00:09:59,050 --> 00:10:01,970 00:10:12,050 Ligean ar a fheiceáil má táimid tar éis sampla. 144 00:10:14,750 --> 00:10:16,930 Is féidir liom scríobh ar cheann tapa fíor. 145 00:10:17,870 --> 00:10:25,700 A ligean ar a ghlacadh ar aon chomhad, hello.c. 146 00:10:56,060 --> 00:10:59,070 Comhad réasúnta simplí. 147 00:10:59,070 --> 00:11:03,570 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. 148 00:11:03,570 --> 00:11:07,990 Sin a dhéanamh Dia duit agus ansin. / Hello. 149 00:11:07,990 --> 00:11:10,720 Anois, tá leideanna sé dom rud éigin a chur isteach, 150 00:11:10,720 --> 00:11:15,070 rud a chiallaíonn sé ag fanacht ar rudaí a chur isteach i caighdeán isteach 151 00:11:15,070 --> 00:11:20,450 Mar sin, dul isteach is cuma cad ba mhaith liom i caighdeán isteach Táimid ag dul ach a rá Dia duit, Rob! 152 00:11:20,450 --> 00:11:23,310 Ansin tá phriontáil go caighdeán amach Dia duit, Rob! 153 00:11:23,310 --> 00:11:28,860 Má dhéanann mé. / Dia duit agus ansin atreorú, 154 00:11:30,740 --> 00:11:34,310 do anois is féidir leat a atreorú ach amháin ó chomhad. 155 00:11:34,310 --> 00:11:41,720 Mar sin má chuir mé i roinnt comhad, txt, agus chuir mé Rob, 156 00:11:41,720 --> 00:11:52,300 má ritheann Dia duit agus ansin an comhad txt athdhíriú isteach. / hello, tá sé ag dul a rá Dia duit, Rob! láithreach. 157 00:11:52,300 --> 00:11:57,160 Nuair a fhaigheann sé ar dtús GetString agus é ag fanacht ar chaighdeán i, 158 00:11:57,160 --> 00:12:01,730 caighdeánach i bhfuil a thuilleadh ag fanacht ar an méarchlár le haghaidh sonraí a fháil isteach. 159 00:12:01,730 --> 00:12:05,980 Ina áit sin, ní mór dúinn a atreorú caighdeánach i a léamh ó na comhaid txt. 160 00:12:05,980 --> 00:12:10,290 Agus mar sin tá sé ag dul a léamh ó txt comhad, a bhfuil ach an Rob líne, 161 00:12:10,290 --> 00:12:13,380 agus ansin dul ar é a phriontáil Dia duit, Rob! 162 00:12:13,380 --> 00:12:18,180 Agus má bhí mé, is féidir liom a dhéanamh chomh maith. / Dia duit 00:12:21,500 agus ansin an caighdeán amach go bhfuil sé ar a phriontáil, a bhfuil Dia duit, Rob!, 164 00:12:21,500 --> 00:12:24,700 Is féidir liom a atreorú go isteach ina chomhad féin. 165 00:12:24,700 --> 00:12:29,790 Glaofaidh mé díreach tar éis an comhad Dia duit - ní hea, ní bheidh mé, toisc go bhfuil an inrite - txt2. 166 00:12:29,790 --> 00:12:40,150 Anois, tá txt2 ag dul go bhfuil an t-aschur de. / Dia duit 00:12:43,520 >> Ceisteanna? 168 00:12:45,900 --> 00:12:49,090 >> Maith go leor. Mar sin, ansin anseo tá píblíne. 169 00:12:49,090 --> 00:12:53,510 Is iad Píopaí an t-aonad seo caite atreoraithe. 170 00:12:53,510 --> 00:12:58,750 >> 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>, 171 00:12:58,750 --> 00:13:01,070 go s atreorú earráid chaighdeánach. 172 00:13:01,070 --> 00:13:06,280 Mar sin, má chuaigh rud éigin a earráid chaighdeánach, ní bheadh ​​sé a fháil a chur i txt2. 173 00:13:06,280 --> 00:13:12,480 Ach faoi deara má dhéanann mé 2>, ansin tá a phriontáil sé fós Dia duit, Rob! ar an líne ordaithe 174 00:13:12,480 --> 00:13:18,600 mar go bhfuil mé atreorú ach earráid chaighdeánach, nach bhfuil mé ag redirecting caighdeán amach. 175 00:13:18,600 --> 00:13:22,210 Earráid chaighdeánach, agus amach caighdeánach éagsúla. 176 00:13:24,210 --> 00:13:27,080 Má bhí tú a scríobh i ndáiríre go earráid chaighdeánach, 177 00:13:27,080 --> 00:13:35,080 ansin d'fhéadfadh liom a athrú seo a bheith fprintf a stderr. 178 00:13:35,080 --> 00:13:37,850 Mar sin, printf, de réir réamhshocraithe priontaí, go amach caighdeánach. 179 00:13:37,850 --> 00:13:41,720 Más mian liom a phriontáil chuig earráid chaighdeánach de láimh, ansin tá mé a úsáid fprintf 180 00:13:41,720 --> 00:13:45,010 agus a shonrú cad ba mhaith liom a phriontáil go. 181 00:13:45,010 --> 00:13:49,720 Más rud é in ionad rinne mé stdout fprintf, ansin tá go bunúsach comhionann le printf. 182 00:13:49,720 --> 00:13:55,530 Ach fprintf chuig earráid chaighdeánach. 183 00:13:57,790 --> 00:14:03,650 Mar sin anois, má athdhíriú seo i txt2, Dia duit, Rob! Tá ag éirí clóite fós ag an líne orduithe 184 00:14:03,650 --> 00:14:08,270 ó tá sé ag dul i gcló go earráid chaighdeánach agus tá mé ag atreorú ach caighdeán amach. 185 00:14:08,270 --> 00:14:16,420 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! 186 00:14:16,420 --> 00:14:21,910 Mar sin anois, is féidir leat do chuid earráidí iarbhír phriontáil chuig earráid chaighdeánach, 187 00:14:21,910 --> 00:14:24,720 agus do theachtaireachtaí rialta a phriontáil go amach caighdeánach. 188 00:14:24,720 --> 00:14:31,420 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> 189 00:14:31,420 --> 00:14:33,800 ionas go bhfuil do chlár ag dul a reáchtáil de ghnáth, 190 00:14:33,800 --> 00:14:38,400 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, 191 00:14:38,400 --> 00:14:44,500 mar sin earráidí, agus ansin breathnú ina dhiaidh sin agus beidh do earráidí comhad aon earráidí a tharla a bheith acu. 192 00:14:45,200 --> 00:14:47,540 >> Ceisteanna? 193 00:14:47,540 --> 00:14:58,070 >> Is é an ceann deireanach píopa, ar féidir leat smaoineamh ar mar an caighdeán amach ó ordú 194 00:14:58,070 --> 00:15:01,210 agus a chiallaíonn sé an caighdeán i gceannas ar an eile. 195 00:15:01,210 --> 00:15:05,570 Sampla is anseo macalla rud líne ordaithe 196 00:15:05,570 --> 00:15:11,840 go bhfuil dul díreach a macalla is cuma cad a chuir mé mar a argóint. Ní bheidh mé comharthaí athfhriotail a chur. 197 00:15:11,840 --> 00:15:16,150 Echo blah, blah, blah go bhfuil ag dul díreach a phriontáil blah, blah, blah. 198 00:15:16,150 --> 00:15:20,600 Roimhe sin, nuair a dúirt mé go raibh mé a chur Rob i gcomhad txt 199 00:15:20,600 --> 00:15:28,830 toisc nach féidir liom a atreorú ach comhaid txt, ina ionad sin, / má macalla liom Rob 200 00:15:28,830 --> 00:15:35,520 agus ansin píopa sé isteach. / hello, a dhéanamh freisin an cineál céanna rud. 201 00:15:35,520 --> 00:15:39,160 Tá sé seo ag cur an t-aschur seo a ordú, macalla Rob, 202 00:15:39,160 --> 00:15:43,610 agus é a úsáid mar an t-ionchur do. / hello. 203 00:15:44,790 --> 00:15:49,560 Is féidir leat smaoineamh ar é mar a atreorú ar dtús macalla Rob i gcomhad 204 00:15:49,560 --> 00:15:54,160 agus ansin ionchur. / Dia duit go comhad go raibh outputted díreach. 205 00:15:54,160 --> 00:15:57,850 Ach a thógann sé an comhad sealadach amach as an pictiúr. 206 00:16:01,890 --> 00:16:04,460 >> Ceisteanna ar sin? 207 00:16:04,460 --> 00:16:07,150 >> Is é an chéad cheist eile ag dul chun go mbeadh seo. 208 00:16:07,150 --> 00:16:15,310 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? 209 00:16:15,310 --> 00:16:24,160 Is iad na horduithe táimid ag dul a iarraidh úsáid a bhaint anseo ar leith, uniq amhlaidh, agus ansin leithreas. 210 00:16:24,160 --> 00:16:28,840 Is féidir leat é uniq fear chun breathnú i ndáiríre ar cad a dhéanann sin, 211 00:16:28,840 --> 00:16:34,840 agus tá sé ag dul ach a scagadh línte meaitseáil in aice as an ionchur. 212 00:16:34,840 --> 00:16:40,690 Agus is é fear wc ag dul i gcló an líne nua, focal, agus líon na mbeart le haghaidh gach comhad. 213 00:16:40,690 --> 00:16:43,760 Agus is é an ceann deireanach táimid ag dul a iarraidh úsáid a bhaint saghas, 214 00:16:43,760 --> 00:16:47,410 atá ag dul a shórtáil ach línte comhaid txt. 215 00:16:47,410 --> 00:16:58,080 Má dhéanann mé roinnt comhad txt, names.txt, agus tá sé Rob, Tommy, Joseph, Tommy, Joseph, RJ, Rob, 216 00:16:58,080 --> 00:17:03,910 cad ba mhaith liom a dhéanamh anseo ná a fháil ar líon na n-ainmneacha ar leith sa chomhad seo. 217 00:17:03,910 --> 00:17:08,750 Mar sin, cad ba cheart an freagra a bheith? >> [Mac léinn] 4. >> Yeah. 218 00:17:08,750 --> 00:17:13,780 Ba chóir é a 4 ó Rob, Tommy, Joseph, is iad na RJ ach ainmneacha ar leith sa chomhad seo. 219 00:17:13,780 --> 00:17:20,180 An chéad chéim, má dhéanann mé díreach tar éis líon focal ar names.txt, 220 00:17:20,180 --> 00:17:24,290 tá sé seo ag insint i ndáiríre dom gach rud. 221 00:17:24,290 --> 00:17:32,560 Tá sé seo i ndáiríre priontáil - ligean ar a fheiceáil, fear wc - línte nua, focail, agus comhaireamh beart. 222 00:17:32,560 --> 00:17:38,270 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. 223 00:17:41,730 --> 00:17:44,300 Mar sin, tá go céim 1. 224 00:17:44,300 --> 00:17:50,510 Ach níl mé ag iarraidh a wc-l names.txt toisc go bhfuil names.txt ach go léir na hainmneacha, 225 00:17:50,510 --> 00:17:54,170 agus ba mhaith liom a scagadh amach aon cinn neamh-uathúil. 226 00:17:54,170 --> 00:18:01,200 Mar sin má féidir liom uniq names.txt, nach dtugann go leor dom cad ba mhaith liom 227 00:18:01,200 --> 00:18:03,760 mar go bhfuil na hainmneacha dhúbailt fós ann. 228 00:18:03,760 --> 00:18:07,690 Cén fáth go bhfuil sin? Cén fáth nach bhfuil uniq ag déanamh cad ba mhaith liom? 229 00:18:07,690 --> 00:18:10,500 [Mac léinn] Níl na dúblaigh [inaudible] >> Yeah. 230 00:18:10,500 --> 00:18:16,370 Cuimhnigh ar an leathanach fear do uniq deir línte meaitseáil scagaire in aice láimhe. 231 00:18:16,370 --> 00:18:19,680 Nach bhfuil siad in aice láimhe, mar sin ní bheidh sé scagaire leo. 232 00:18:19,680 --> 00:18:31,100 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. 233 00:18:31,100 --> 00:18:34,450 Mar sin, anois names.txt saghas sin. 234 00:18:34,450 --> 00:18:40,550 Tá mé ag dul go dtí mhaith a úsáid mar an t-ionchur a bhraitheann, a bhfuil | uniq. 235 00:18:40,550 --> 00:18:43,390 Tugann sin dom Joseph, RJ, Rob, Tommy, 236 00:18:43,390 --> 00:18:49,260 agus ba mhaith liom sin a úsáid mar ionchur chun wc-l, 237 00:18:49,260 --> 00:18:52,740 atá ag dul a thabhairt dom 4. 238 00:18:52,740 --> 00:18:56,930 Cosúil a deir sé anseo, a d'fhéadfadh a píblíne leat é a úsáid? 239 00:18:56,930 --> 00:19:01,390 Is féidir leat a dhéanamh a lán de rudaí cosúil le baint úsáide as sraith na n-orduithe 240 00:19:01,390 --> 00:19:05,130 nuair a úsáideann tú an t-aschur ó ordú mar ionchur leis an ordú seo chugainn. 241 00:19:05,130 --> 00:19:08,780 Is féidir leat é a lán de rudaí, a lán rudaí cliste. 242 00:19:08,780 --> 00:19:11,440 >> Ceisteanna? 243 00:19:12,910 --> 00:19:14,600 Maith go leor. 244 00:19:14,600 --> 00:19:17,880 Sin é do píopaí agus atreorú. 245 00:19:18,370 --> 00:19:24,090 >> Anois táimid ag dul ar aghaidh go dtí an stuif iarbhír, an stuif códaithe. 246 00:19:24,090 --> 00:19:29,100 Taobh istigh den PDF, feicfidh tú an ordaithe, 247 00:19:29,100 --> 00:19:32,950 agus beidh tú ag iarraidh a reáchtáil an ordú i do fearas. 248 00:19:36,240 --> 00:19:42,250 Is wget an ordú do díreach ag fáil rud éigin as an Idirlíon, go bunúsach, 249 00:19:42,250 --> 00:19:45,180 mar sin wget agus an URL seo. 250 00:19:45,180 --> 00:19:49,110 Má chuaigh tú ar an URL i do bhrabhsálaí, bheadh ​​sé a íoslódáil go comhad. 251 00:19:49,110 --> 00:19:52,510 Chliceáil mé díreach ar sé, mar sin a íoslódáil an comhad a dom. 252 00:19:52,510 --> 00:19:55,650 Ach scríobh wget an rud taobh istigh de na gcríochfort 253 00:19:55,650 --> 00:19:58,620 ag dul díreach chun é a íoslódáil isteach i do teirminéil. 254 00:19:58,620 --> 00:20:02,750 Tá mé section5.zip, agus beidh tú ag iarraidh section5.zip a unzip, 255 00:20:02,750 --> 00:20:06,520 atá ag dul a thabhairt duit fillteán a dtugtar section5, 256 00:20:06,520 --> 00:20:11,550 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é. 257 00:20:33,380 --> 00:20:37,710 Mar a mholadh ainmneacha comhaid na cláir seo ', tá siad Buggy giotán, 258 00:20:37,710 --> 00:20:40,990 mar sin tá do misean a figiúr amach cén fáth úsáid a bhaint as gdb. 259 00:20:40,990 --> 00:20:44,560 An bhfuil gach duine a íoslódáil leo / a fhios conas a fháil íoslódáil orthu 260 00:20:44,560 --> 00:20:47,480 isteach ina fearas? Maith go leor. 261 00:20:47,480 --> 00:20:56,400 >> Rith ./buggy1, beidh sé a rá locht Deighilt (lárnach dumped), 262 00:20:56,400 --> 00:21:00,500 a mbeidh aon uair a fhaigheann tú segfault, tá sé ina rud dona. 263 00:21:00,500 --> 00:21:03,810 Cad iad na himthosca a dhéanann tú a fháil segfault? 264 00:21:03,810 --> 00:21:08,210 [Mac léinn] Dereferencing a pointeoir nialasach. >> Yeah. Mar sin, is é sin sampla amháin. 265 00:21:08,210 --> 00:21:11,580 Dereferencing a pointeoir nialasach tú ag dul a fháil segfault. 266 00:21:11,580 --> 00:21:16,720 Cad a bhealach segfault bhfuil tú ag touching cuimhne ní ba chóir duit a bheith touching. 267 00:21:16,720 --> 00:21:21,350 Mar sin, dereferencing a pointeoir nialasach é touching seoladh 0, 268 00:21:21,350 --> 00:21:28,060 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. 269 00:21:28,060 --> 00:21:31,920 Mar sin tá sin an fáth go dereferencing ar thorthaí pointeoir nialasach i segfault. 270 00:21:31,920 --> 00:21:37,210 Nuair a thiteann tú nach bhfuil a thúsú le pointeoir, ansin tá sé luach truflais, 271 00:21:37,210 --> 00:21:41,520 agus mar sin nuair iarracht tú téigh i sé, i ngach dóchúlacht bhfuil tú ag touching cuimhne 272 00:21:41,520 --> 00:21:43,540 go bhfuil i lár an áit. 273 00:21:43,540 --> 00:21:45,650 Má tharlaíonn tú a fháil ádh agus an luach truflais 274 00:21:45,650 --> 00:21:48,440 tharla go pointe éigin ar an chruach nó rud éigin, 275 00:21:48,440 --> 00:21:50,820 ansin nuair a téigh tú go pointeoir nach bhfuil tú initialized, 276 00:21:50,820 --> 00:21:52,730 Beidh aon rud a théann mícheart. 277 00:21:52,730 --> 00:21:55,480 Ach má tá sé dírithe ar, a rá, áit éigin idir an chairn agus an carn, 278 00:21:55,480 --> 00:21:59,850 nó tá sé ach cur in iúl go áit éigin nach bhfuil in úsáid ag do chlár go fóill, 279 00:21:59,850 --> 00:22:02,240 ansin tá tú ag touching cuimhne ní ba chóir duit a bheith touching agus tú segfault. 280 00:22:02,240 --> 00:22:06,370 Nuair a scríobhann tú feidhm athchúrsach agus recurses sé uair an iomarca 281 00:22:06,370 --> 00:22:08,720 agus a fhásann do Stack ró-mhór agus an Imbhuaileann Stack i rudaí 282 00:22:08,720 --> 00:22:12,270 nár chóir é a colliding le, agus tú ag touching cuimhne ní ba chóir duit a bheith touching, 283 00:22:12,270 --> 00:22:14,810 mar sin leat segfault. 284 00:22:14,810 --> 00:22:17,010 Sin é an rud a segfault é. 285 00:22:17,010 --> 00:22:21,810 >> Tá sé freisin ar an gcúis chéanna go má tá tú ar shraith ar nós - 286 00:22:21,810 --> 00:22:23,930 a ligean ar dul ar ais chuig an gclár roimhe seo. 287 00:22:23,930 --> 00:22:28,530 I hello.c--I'm ag dul ach a dhéanamh rud éigin eile. 288 00:22:28,530 --> 00:22:33,770 char * s = "Dia duit ar domhan!"; 289 00:22:33,770 --> 00:22:42,310 Má úsáideann mé * s rud nó s [0] = 'X'; 290 00:22:42,310 --> 00:22:47,290 mar sin déan hello,. / hello, cén fáth go raibh go segfault? 291 00:22:48,410 --> 00:22:51,250 Cén fáth go raibh an segfault? 292 00:22:55,660 --> 00:22:57,890 Cad ba mhaith leat bheith ag súil le tarlú? 293 00:22:57,890 --> 00:23:06,640 Má raibh mé printf ("% s \ n", s); cad a mbeifeá ag súil le priontáil? 294 00:23:06,640 --> 00:23:09,930 [Mac léinn] X hello. >> Yeah. 295 00:23:09,930 --> 00:23:15,140 Is é an fhadhb go bhfuil tú nuair a dhearbhú ar shraith mar seo, 296 00:23:15,140 --> 00:23:18,190 Is é ar pointeoir go ag dul a dul ar an chruach, 297 00:23:18,190 --> 00:23:25,880 agus cad é atá dírithe ar an teaghrán atá in inléite amháin cuimhne. 298 00:23:25,880 --> 00:23:30,560 Mar sin, ach ag an t-ainm chuimhne, inléite amháin, ba cheart duit a fháil ar an smaoineamh 299 00:23:30,560 --> 00:23:33,010 go má tá tú iarracht a athrú cad atá i inléite amháin cuimhne, 300 00:23:33,010 --> 00:23:36,670 bhfuil tú ag déanamh rud éigin ní ba chóir duit a bheith ag déanamh le cuimhne agus tú segfault. 301 00:23:36,670 --> 00:23:45,360 Tá sé seo i ndáiríre difríocht mhór idir Char * s agus ruabhric s []. 302 00:23:45,360 --> 00:23:48,790 Mar sin, ruabhric s [], tá anois an teaghrán seo ag dul a chur ar an chruach, 303 00:23:48,790 --> 00:23:53,960 agus nach bhfuil an chairn inléite amháin, rud a chiallaíonn gur chóir obair breá breá. 304 00:23:55,500 --> 00:23:57,370 Agus a dhéanann sé. 305 00:23:57,370 --> 00:24:06,250 Cuimhnigh go bhfuil nuair a dhéanann mé ruabhric * s = "Dia duit ar domhan!", Is é féin ar an chruach 306 00:24:06,250 --> 00:24:10,390 ach pointí s áit éigin eile, agus go dtarlaíonn áit éigin eile a bheith inléite amháin. 307 00:24:10,390 --> 00:24:15,640 Ach char s [] ach rud éigin ar an chruach. 308 00:24:17,560 --> 00:24:21,760 Mar sin, tá go sampla eile de segfault ag tarlú. 309 00:24:21,760 --> 00:24:27,820 >> Chonaic muid gur tharla ./buggy1 i segfault. 310 00:24:27,820 --> 00:24:31,810 Go teoiriciúil, ní ba chóir duit féachaint ar buggy1.c láithreach. 311 00:24:31,810 --> 00:24:35,170 Ina áit sin, beidh muid ag breathnú ar sé trí gdb. 312 00:24:35,170 --> 00:24:37,750 Fógra go nuair a fhaigheann tú locht Deighilt (lárnach dumped), 313 00:24:37,750 --> 00:24:40,850 gheobhaidh tú an comhad seo os cionn lárnach anseo ar a dtugtar. 314 00:24:40,850 --> 00:24:45,200 Má táimid l LS-, beidh orainn a fheiceáil go bhfuil croí de ghnáth comhad mór go leor. 315 00:24:45,200 --> 00:24:51,580 Is é seo an líon na mbeart an chomhaid, mar sin tá sé cosúil go bhfuil sé 250-rud éigin cilibheart. 316 00:24:51,580 --> 00:24:56,120 Is é an chúis atá leis seo go cad é an Dumpáil croí iarbhír 317 00:24:56,120 --> 00:25:01,410 Is é nuair do tuairteanna chláir, ar staid gcuimhne do chlár 318 00:25:01,410 --> 00:25:05,230 Faigheann a chóipeáil díreach agus a ghreamú isteach an comhad seo. 319 00:25:05,230 --> 00:25:07,270 Tá sé Faigheann dumpáilte isteach sa chomhad. 320 00:25:07,270 --> 00:25:13,060 An clár seo, cé go raibh sé ag rith, a tharla go bhfuil úsáid chuimhne de thart ar 250 cilibheart, 321 00:25:13,060 --> 00:25:17,040 agus mar sin tá go bhfuair dumpáilte cad i an comhad seo. 322 00:25:17,040 --> 00:25:23,630 Anois is féidir leat breathnú ar an gcomhad má dhéanaimid gdb buggy1 croí. 323 00:25:23,630 --> 00:25:30,130 Is féidir linn a dhéanamh ach gdb buggy1, agus go mbeidh tús a chur díreach gdb suas go rialta, 324 00:25:30,130 --> 00:25:33,800 ag baint úsáide as buggy1 mar chomhad ionchuir. 325 00:25:33,800 --> 00:25:38,260 Ach má dhéanann tú gdb buggy1 croí, ansin tá sé ag dul go sonrach chun tús a chur suas gdb 326 00:25:38,260 --> 00:25:40,330 trí bhreathnú ar an comhad lárnach. 327 00:25:40,330 --> 00:25:45,560 Agus tú ag rá buggy1 gdb ciallaíonn a fhios a thagann go comhad lárnach ón gclár buggy1. 328 00:25:45,560 --> 00:25:49,580 Dá bhrí sin tá gdb buggy1 croí ag dul a thabhairt láithreach dúinn 329 00:25:49,580 --> 00:25:52,060 go dtí an áit a tharla an clár a fhoirceannadh. 330 00:25:57,720 --> 00:26:02,340 Feicimid anseo Clár fhoirceannadh le comhartha 11, locht Deighilt. 331 00:26:02,340 --> 00:26:10,110 Tarlú againn a fheiceáil ar líne cóimeála, nach bhfuil dócha an-chabhrach. 332 00:26:10,110 --> 00:26:15,360 Ach má tá tú cineál BT nó cúl-lorg, tá go bhfuil ag dul a bheith ar an fheidhm 333 00:26:15,360 --> 00:26:19,430 a thugann dúinn an liosta de na ár frámaí chairn atá ann faoi láthair. 334 00:26:19,430 --> 00:26:23,150 Mar sin, cúl-lorg. Breathnaíonn sé cosúil tá muid ach dhá frámaí chairn. 335 00:26:23,150 --> 00:26:26,310 Is é an chéad ár fráma Stack is mó, 336 00:26:26,310 --> 00:26:29,810 agus is é an dara ceann an fráma cruaiche le haghaidh an fheidhm seo a tharlaíonn dúinn a bheith i, 337 00:26:29,810 --> 00:26:34,440 a bhreathnaíonn ar nós againn ach an cód tionól do. 338 00:26:34,440 --> 00:26:38,050 Mar sin a ligean dul ar ais isteach inár fheidhm is mó, 339 00:26:38,050 --> 00:26:42,300 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, 340 00:26:42,300 --> 00:26:45,160 ach ní liom a dhéanamh beagnach síos - nó suas. Yeah. 341 00:26:45,160 --> 00:26:50,710 Suas agus síos. Suas thugann tú suas amháin fráma cruaiche, síos thugann tú síos le fráma Stack. 342 00:26:50,710 --> 00:26:53,240 Claonadh agam riamh sin a úsáid. 343 00:26:53,240 --> 00:26:59,120 Mé díreach tar éis a rá go sonrach fráma 1, a bhfuil dul go dtí an fráma lipéadaithe 1. 344 00:26:59,120 --> 00:27:01,750 Fráma 1 ag dul a thabhairt dúinn i fráma Stack is mó, 345 00:27:01,750 --> 00:27:05,570 agus deir sé ceart anseo ar an líne de chód a tharlóidh dúinn a bheith ag. 346 00:27:05,570 --> 00:27:07,950 Má bhíomar ag iarraidh línte cúpla níos mó de cód, is féidir linn a rá liosta, 347 00:27:07,950 --> 00:27:11,280 agus tá go dul a thabhairt dúinn go léir na línte cód timpeall air. 348 00:27:11,280 --> 00:27:13,360 Ba é an líne segfaulted muid ag 6: 349 00:27:13,360 --> 00:27:17,360 más rud é (strcmp ("CS50 carraigeacha", argv [1]) == 0). 350 00:27:17,360 --> 00:27:24,130 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é. 351 00:27:24,130 --> 00:27:28,800 Ach is féidir linn é a chur céim amháin eile agus a rá, "Cén fáth a mbeadh argv [1] segfault?" 352 00:27:28,800 --> 00:27:38,830 Cló Let s argv [1], agus tá sé cosúil sé 0x0, a bhfuil an pointeoir nialasach. 353 00:27:38,830 --> 00:27:44,750 Táimid ag strcmping CS50 carraigeacha agus Eolas faoin margadh saothair, agus mar sin go ag dul a segfault. 354 00:27:44,750 --> 00:27:48,280 Agus é sin an fáth argv [1] null? 355 00:27:48,640 --> 00:27:51,280 [Mac léinn] Toisc nach raibh againn a thabhairt dó aon argóintí ordú-líne. 356 00:27:51,280 --> 00:27:53,390 Yeah. Ní raibh muid a thabhairt dó aon argóintí ordú-líne. 357 00:27:53,390 --> 00:27:58,460 Dá bhrí sin tá ./buggy1 ag dul ach go bhfuil argv [0] a bheith ./buggy1. 358 00:27:58,460 --> 00:28:02,100 Níl sé ag dul a bheith acu argv [1], ionas go mbeidh ag dul ar a segfault. 359 00:28:02,100 --> 00:28:07,450 Ach más rud é, ina ionad sin, is féidir liom ach CS50, tá sé ag dul a rá leat D 360 00:28:07,450 --> 00:28:09,950 toisc go bhfuil an méid atá sé ceaptha a dhéanamh. 361 00:28:09,950 --> 00:28:15,240 Ag Breathnú ar an buggy1.c, tá sé ceaptha a phriontáil "gheobhaidh tú D" - 362 00:28:15,240 --> 00:28:20,820 Má argv [1] nach bhfuil "CS50 carraigeacha", "gheobhaidh tú D", eile "gheobhaidh tú an A!" 363 00:28:20,820 --> 00:28:25,660 Mar sin, más mian linn an A, ní mór dúinn é seo a chur i gcomparáid mar fíor, 364 00:28:25,660 --> 00:28:28,710 rud a chiallaíonn go gcomparáid leis 0. 365 00:28:28,710 --> 00:28:31,100 Mar sin, argv riachtanais [1] a bheith "CS50 carraigeacha". 366 00:28:31,100 --> 00:28:35,660 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. 367 00:28:35,660 --> 00:28:41,690 Sin a fháil CS50 \ carraigeacha agus tú ar A! 368 00:28:41,690 --> 00:28:44,060 Mura ndéanann tú a dhéanamh ar an cúlslais, cén fáth nach bhfuil an obair? 369 00:28:44,060 --> 00:28:47,190 [Mac léinn] Tá sé dhá argóint éagsúla. >> Yeah. 370 00:28:47,190 --> 00:28:52,540 Argv [1] ag dul a bheith CS50, agus argv tá [2] ag dul a bheith carraigeacha. Maith go leor. 371 00:28:52,540 --> 00:28:56,470 >> Anois tá ./buggy2 dul chun segfault arís. 372 00:28:56,470 --> 00:29:01,880 In áit a oscailt lena chomhad lárnach, beidh orainn a oscailt suas díreach buggy2 go díreach, 373 00:29:01,880 --> 00:29:05,000 mar sin gdb buggy2. 374 00:29:05,000 --> 00:29:09,590 Anois, má táimid ar siúl ach ár gclár, ansin tá sé ag dul a rá Clár fuair comhartha SIGSEGV, 375 00:29:09,590 --> 00:29:15,530 a bhfuil an segfault comhartha, agus tá sé seo nuair a tharla sé le tarlú. 376 00:29:15,530 --> 00:29:21,250 Ag Breathnú ar an cúl-lorg, feicimid go raibh muid sa oh_no feidhm, 377 00:29:21,250 --> 00:29:23,900 Bhí ar a dtugtar ag an breá úr fheidhm, bhí ar a dtugtar ag an binky feidhme, 378 00:29:23,900 --> 00:29:26,460 Bhí ar a dtugtar ag príomh-. 379 00:29:26,460 --> 00:29:31,680 Is féidir linn a fheiceáil freisin ar na hargóintí ar na feidhmeanna sin. 380 00:29:31,680 --> 00:29:34,680 Ba é an argóint go breá úr agus binky 1. 381 00:29:34,680 --> 00:29:44,390 Má táimid liosta an fheidhm oh_no, feicimid go bhfuil oh_no déanamh ach ruabhric ** s = NULLComment; 382 00:29:44,390 --> 00:29:47,410 * S = "borradh"; 383 00:29:47,410 --> 00:29:50,330 Cén fáth a mbeadh a dteipeann orthu? 384 00:29:54,330 --> 00:29:58,380 [Mac léinn] Ní féidir leat dereference téigh an pointeoir null? >> Yeah. 385 00:29:58,380 --> 00:30:06,090 Tá sé seo ag rá ach go bhfuil s NULLComment, is cuma má tharlaíonn go bhfuil a bheith ina ** Char, 386 00:30:06,090 --> 00:30:12,070 a, ag brath ar conas tú a léirmhíniú é, d'fhéadfadh sé a bheith ina pointeoir le pointeoir chuig teaghrán 387 00:30:12,070 --> 00:30:15,550 nó sraith de teaghráin. 388 00:30:15,550 --> 00:30:21,430 Tá sé s NULLComment, mar sin tá * s dereferencing a pointeoir nialasach, 389 00:30:21,430 --> 00:30:24,800 agus mar sin tá sé seo ag dul a tuairteála. 390 00:30:24,800 --> 00:30:27,540 Tá sé seo ar cheann de na bealaí is tapúla is féidir leat a segfault b'fhéidir. 391 00:30:27,540 --> 00:30:31,300 Tá sé seo á dhearbhú ach pointeoir nialasach agus láithreach segfaulting. 392 00:30:31,300 --> 00:30:34,570 Sin an méid a bhfuil oh_no a dhéanamh. 393 00:30:34,570 --> 00:30:43,400 Má théann muid suas amháin fráma, ansin táimid ag dul chun dul isteach ar an fheidhm a dtugtar oh_no. 394 00:30:43,400 --> 00:30:44,830 Gá dom a dhéanamh go síos. 395 00:30:44,830 --> 00:30:48,610 Mura bhfuil tú dul isteach i ordú agus bhuail tú díreach isteach arís, 396 00:30:48,610 --> 00:30:52,350 beidh sé arís ach an ordú roimhe sin a bhí ar siúl agat. 397 00:30:52,350 --> 00:30:56,610 Tá muid i bhfráma 1. 398 00:30:56,610 --> 00:31:04,650 Liostáil seo fráma, a fheicimid anseo go bhfuil ár fheidhm. 399 00:31:04,650 --> 00:31:08,520 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ó é. 400 00:31:08,520 --> 00:31:13,640 Deir an breá úr feidhm más rud é i 1, ansin téigh chuig an fheidhm oh_no, 401 00:31:13,640 --> 00:31:15,960 eile dul go dtí an fheidhm slinky. 402 00:31:15,960 --> 00:31:18,700 Agus tá a fhios againn go bhfuil i 1 mar gheall orainn a tharlóidh a fheiceáil suas anseo 403 00:31:18,700 --> 00:31:22,560 Bhí ar a dtugtar go breá úr leis an argóint 1. 404 00:31:22,560 --> 00:31:27,560 Nó is féidir leat a dhéanamh a phriontáil i agus beidh sé a rá go bhfuil i 1. 405 00:31:27,560 --> 00:31:33,770 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. 406 00:31:33,770 --> 00:31:36,600 Suas. Anois, tá muid i binky. 407 00:31:36,600 --> 00:31:41,340 Liostáil an fheidhm seo - ar an liosta ó roimh ghearradh leath mé amach - 408 00:31:41,340 --> 00:31:52,670 Thosaigh sé amach mar más rud é i 0, ansin táimid ag dul a ghlaoch air oh_no, glaoch eile breá úr. 409 00:31:52,670 --> 00:31:57,000 Tá a fhios againn a bhí mé 1, agus mar sin ar a dtugtar breá úr. 410 00:31:57,000 --> 00:32:05,030 Agus anois táimid ar ais i is mó, agus is mó tá sé ag dul ach a bheith slánuimhir i = Rand ()% 3; 411 00:32:05,030 --> 00:32:08,790 Go bhfuil dul díreach a thabhairt duit uimhir randamach go bhfuil ceachtar 0, 1, nó 2. 412 00:32:08,790 --> 00:32:12,780 Tá sé seo ag dul binky chun glaoch leis an uimhir, agus beidh sé ar ais 0. 413 00:32:12,780 --> 00:32:16,700 Ag Breathnú ar an seo, 414 00:32:16,700 --> 00:32:19,880 ach ag siúl tríd an gclár de láimh gan rith é láithreach, 415 00:32:19,880 --> 00:32:25,400 go mbeadh tú a shocrú le pointe sos ag mó, rud a chiallaíonn go nuair a ritheann muid ar an gclár 416 00:32:25,400 --> 00:32:31,020 Ritheann do chlár go dtí amas sé pointe sos. 417 00:32:31,020 --> 00:32:35,450 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. 418 00:32:35,450 --> 00:32:44,700 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. 419 00:32:44,700 --> 00:32:47,050 Is féidir leat a dhéanamh céim nó eile. 420 00:32:47,050 --> 00:32:51,800 Bualadh eile, anois tá mé leagtha amach chun Rand ()% 3, ionas gur féidir linn a phriontáil ar luach i, 421 00:32:51,800 --> 00:32:55,280 agus beidh sé a rá go bhfuil i 1. 422 00:32:55,280 --> 00:32:58,110 Anois, a dhéanann sé cuma cé acu a úsáidimid eile nó céim. 423 00:32:58,110 --> 00:33:01,000 Buille faoi thuairim mé mattered sé ar an cheann roimhe sin, ach ba mhaith linn ag iarraidh úsáid a bhaint as seo chugainn. 424 00:33:01,000 --> 00:33:06,000 Má úsáidimid céim, céim muid isteach an fheidhm, rud a chiallaíonn breathnú ar an rud iarbhír 425 00:33:06,000 --> 00:33:07,940 go atá ag tarlú taobh istigh de binky. 426 00:33:07,940 --> 00:33:10,510 Má úsáidimid seo chugainn, ansin ciallaíonn sé dul thar an fheidhm 427 00:33:10,510 --> 00:33:14,070 agus dul díreach chuig an líne eile de chód in ár phríomhfheidhm. 428 00:33:14,070 --> 00:33:17,900 Ceart anseo ar an líne seo, bhí mé ag nuair a dúirt sé Rand ()% 3; 429 00:33:17,900 --> 00:33:21,320 má rinne mé céim, go mbeadh sé dul isteach i bhfeidhm Rand 430 00:33:21,320 --> 00:33:25,110 agus féach ar céard atá ag tarlú ann, agus raibh mé in ann céim trí fheidhm Rand. 431 00:33:25,110 --> 00:33:26,920 Ach ní féidir liom cúram faoi an fheidhm Rand. 432 00:33:26,920 --> 00:33:30,190 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. 433 00:33:30,190 --> 00:33:35,800 Ach anois is féidir liom cúram faoi an fheidhm binky, mar sin ba mhaith liom a dlús a chur isteach sin. 434 00:33:35,800 --> 00:33:37,730 Anois, tá mé i binky. 435 00:33:37,730 --> 00:33:42,040 Is é an chéad líne de chód ag dul a rá más rud é (i == 0), a ghlacadh mé ar chéim, 436 00:33:42,040 --> 00:33:44,930 feicimid muid suas go deireadh ag breá úr. 437 00:33:44,930 --> 00:33:51,620 Má rudaí liosta againn, feicimid go sheiceáil sé i = 0. 438 00:33:51,620 --> 00:33:55,470 Níl mé cothrom le 0, mar sin chuaigh sé leis an riocht eile, 439 00:33:55,470 --> 00:33:59,540 atá ag dul chun glaoch breá úr (i). 440 00:33:59,540 --> 00:34:04,030 D'fhéadfá a fháil ar dhaoine eatarthu. 441 00:34:04,030 --> 00:34:07,380 Má tá tú ach breathnú ar na línte go díreach, d'fhéadfá smaoineamh más rud é (i == 0), 442 00:34:07,380 --> 00:34:10,800 ceart go leor, ansin ghlac mé céim agus anois tá mé ag breá úr (i), 443 00:34:10,800 --> 00:34:14,120 d'fhéadfá smaoineamh nach mór i gceist = 0 nó rud éigin. 444 00:34:14,120 --> 00:34:18,980 Uimh Ciallaíonn sé ach go bhfuil a fhios is féidir é a bata díreach leis an breá úr líne (i). 445 00:34:18,980 --> 00:34:23,300 Toisc nach bhfuil mé 0, nach bhfuil an chéad chéim eile dul go dtí deireadh ag an duine eile. 446 00:34:23,300 --> 00:34:26,239 Ní eile ar líne tá sé ag dul chun stop a chur ag. 447 00:34:26,239 --> 00:34:31,570 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). 448 00:34:31,570 --> 00:34:36,090 Cora, i Dinky (i), feicimid más rud é (i == 1). 449 00:34:36,090 --> 00:34:42,670 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 450 00:34:42,670 --> 00:34:46,489 mar gheall ar glaonna i = 1 an oh_no fheidhm, ar féidir leat dlús a chur isteach, 451 00:34:46,489 --> 00:34:52,969 atá ag dul a shocrú ruabhric ** s = nialasach agus láithreach "borradh". 452 00:34:54,270 --> 00:34:59,690 Agus ansin ag lorg iarbhír ar chur i bhfeidhm buggy2, 453 00:34:59,690 --> 00:35:04,590 seo, atá ag éirí liom ach uimhir randamach - 0, 1, nó 2 - glaoch binky, 454 00:35:04,590 --> 00:35:10,610 agus má tá mé 0 iarrann sé oh_no, eile iarrann sé breá úr, a thagann ar bun anseo. 455 00:35:10,610 --> 00:35:18,100 Más rud é i 1, glaoch oh_no, glaoigh eile slinky, a teacht suas anseo, 456 00:35:18,100 --> 00:35:20,460 más rud é i 2, glaoigh oh_no. 457 00:35:20,460 --> 00:35:24,720 Ní dóigh liom go fiú tá bealach - 458 00:35:24,720 --> 00:35:30,030 An bhfuil aon duine a fheiceáil ar bhealach seo a dhéanamh ar chlár nach mbeidh segfault? 459 00:35:30,030 --> 00:35:37,530 Toisc mura bhfuil mé ag iarraidh rud éigin, má tá mé 0, beidh tú segfault láithreach, 460 00:35:37,530 --> 00:35:41,250 eile a théann tú le feidhm a má tá mé 1 tú segfault, 461 00:35:41,250 --> 00:35:44,540 eile a théann tú le feidhm i gcás má tá mé 2 tú segfault. 462 00:35:44,540 --> 00:35:46,810 Mar sin, is cuma cad a dhéanann tú, is féidir leat segfault. 463 00:35:46,810 --> 00:35:52,380 >> Buille faoi thuairim mé bealach amháin a shocrú go mbeadh sé in ionad a dhéanamh ruabhric ** s = NULLComment, 464 00:35:52,380 --> 00:35:55,610 d'fhéadfaí tú a malloc spás le haghaidh an teaghrán. 465 00:35:55,610 --> 00:36:04,230 D'fhéadfadh muid a dhéanamh malloc (deachúlach) - Is uimhir cad é? 466 00:36:09,910 --> 00:36:15,190 [Mac léinn] (ruabhric) * 5? >> An bhfuil seo cosúil ceart? 467 00:36:15,190 --> 00:36:21,060 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. 468 00:36:24,400 --> 00:36:32,940 Féach ar an gcineál s. A ligean ar chur * slánuimhir, agus mar sin o * x. 469 00:36:32,940 --> 00:36:35,600 Ba mhaith liom a dhéanamh malloc (deachúlach (o)). 470 00:36:35,600 --> 00:36:40,490 Nó má bhí mé le sraith de 5, ba mhaith liom a dhéanamh (deachúlach (o) * 5); 471 00:36:40,490 --> 00:36:44,210 Cad a tharlaíonn má tá mé ** o? 472 00:36:46,260 --> 00:36:49,140 Bheadh ​​Cad malloc? 473 00:36:49,140 --> 00:36:53,510 [Mac léinn] Méid an pointeoir. >> Yeah. (Is uimhir (o *)); 474 00:36:53,510 --> 00:36:56,960 Rud céanna síos anseo. 475 00:36:56,960 --> 00:37:01,280 Ba mhaith liom (Is uimhir (Char *)); 476 00:37:06,170 --> 00:37:12,840 Tá sé seo ag dul spás a leithdháileadh le haghaidh an pointeoir go pointe le "borradh". 477 00:37:12,840 --> 00:37:15,330 Ní féidir liom gá spás a leithdháileadh le haghaidh "borradh" féin 478 00:37:15,330 --> 00:37:17,210 toisc go bhfuil an bunúsach comhionann le méid a dúirt mé roimh 479 00:37:17,210 --> 00:37:20,870 de ruabhric * x = "borradh". 480 00:37:20,870 --> 00:37:27,950 "Borradh" ann cheana. A tharlaíonn sé a bheith ann sa réigiún inléite amháin de chuimhne. 481 00:37:27,950 --> 00:37:35,200 Ach tá sé ann cheana, rud a chiallaíonn an líne de chód, más rud é s ** Char, 482 00:37:35,200 --> 00:37:43,900 ansin * s * ruabhreac agus tú ag leagan an * Char a chur in iúl le "borradh". 483 00:37:43,900 --> 00:37:50,040 Má bhí mé a chóipeáil "borradh" isteach s, ansin ba mhaith liom a dháileadh le haghaidh s. 484 00:37:55,170 --> 00:38:03,900 Feicfidh mé a dhéanamh * s = malloc (deachúlach (ruabhric) * 5); 485 00:38:03,900 --> 00:38:06,210 Cén fáth 5? 486 00:38:06,210 --> 00:38:10,860 Cén fáth nach bhfuil 4? Breathnaíonn sé cosúil le "borradh" Is é 4 carachtair. >> [Mac léinn] An carachtar nialasach. 487 00:38:10,860 --> 00:38:14,580 Yeah. Gach ceann de do chuid teaghráin ag dul go mór ar an carachtar nialasach. 488 00:38:14,580 --> 00:38:23,590 Anois is féidir liom a dhéanamh rud éigin cosúil le strcat - Cad é an fheidhm chun chóipeáil teaghrán? 489 00:38:23,590 --> 00:38:28,520 [Mac léinn] cpy? >> Strcpy. 490 00:38:28,520 --> 00:38:32,700 strcpy fear. 491 00:38:36,120 --> 00:38:39,590 Mar sin, strcpy nó strncpy. 492 00:38:39,590 --> 00:38:43,410 strncpy bhfuil beagán níos sábháilte toisc gur féidir leat a shonrú go díreach cé mhéad carachtair, 493 00:38:43,410 --> 00:38:46,190 ach anseo nach ndéanann sé ábhar mar tá a fhios againn. 494 00:38:46,190 --> 00:38:50,340 Mar sin, strcpy agus táim i na hargóintí. 495 00:38:50,340 --> 00:38:53,100 Is é an chéad argóint ár gceann scríbe. 496 00:38:53,100 --> 00:38:56,770 Is é an dara hargóint ár fhoinse. 497 00:38:56,770 --> 00:39:10,310 S Táimid ag dul a chóipeáil isteach inár * scríbe an pointeoir "borradh". 498 00:39:10,310 --> 00:39:19,820 Cén fáth gur mhaith leat é seo a dhéanamh le strcpy seachas díreach cad a bhí againn roimh 499 00:39:19,820 --> 00:39:22,800 de * s = "borradh"? 500 00:39:22,800 --> 00:39:28,630 Tá cúis b'fhéidir gur mhaith leat é seo a dhéanamh, ach cad é an gcúis sin? 501 00:39:28,630 --> 00:39:31,940 [Mac léinn] Más mian leat rud éigin a athrú i "borradh". >> Yeah. 502 00:39:31,940 --> 00:39:37,950 Anois is féidir liom a dhéanamh rud éigin cosúil le s [0] = 'X'; 503 00:39:37,950 --> 00:39:48,190 mar gheall ar phointí s ar an gcarn agus an spás ar an gcarn go bhfuil s dírithe ar 504 00:39:48,190 --> 00:39:52,320 Is pointeoir le spás níos mó ar an gcarn, a bhfuil a stóráil "borradh". 505 00:39:52,320 --> 00:39:55,150 Dá bhrí sin tá an chóip seo de "borradh" atá á stóráil i gcarn. 506 00:39:55,150 --> 00:39:58,780 Tá go teicniúil dhá chóip de "borradh" in ár gclár. 507 00:39:58,780 --> 00:40:03,500 Níl an chéad cheann a tá tugtha díreach ag síor an teaghrán "borradh", 508 00:40:03,500 --> 00:40:09,250 agus an dara cóip de "borradh", a cruthaíodh strcpy an chóip de "borradh". 509 00:40:09,250 --> 00:40:13,100 Ach tá an cóip de "borradh" atá á stóráil ar an gcarn, agus an gcarn go bhfuil tú é a athrú. 510 00:40:13,100 --> 00:40:17,250 Níl an gcarn inléite amháin, ciallaíonn ionas go mbeidh go s [0] 511 00:40:17,250 --> 00:40:20,500 ag dul chun ligean duit a athrú ar an luach "borradh". 512 00:40:20,500 --> 00:40:23,130 Tá sé seo ag dul chun ligean duit a athrú leis na carachtair. 513 00:40:23,130 --> 00:40:26,640 >> Ceisteanna? 514 00:40:27,740 --> 00:40:29,290 Maith go leor. 515 00:40:29,290 --> 00:40:35,500 >> Bogadh ar aghaidh go dtí buggy3, gdb ligean buggy3. 516 00:40:35,500 --> 00:40:39,840 Táimid ag reáchtáil ach é agus a fheiceann muid muid a fháil segfault. 517 00:40:39,840 --> 00:40:46,550 Má táimid cúl-lorg, níl ach dhá feidhmeanna. 518 00:40:46,550 --> 00:40:52,970 Má théann muid suas i ár bhfeidhm is mó, feicimid go segfaulted muid ag an líne. 519 00:40:52,970 --> 00:41:00,180 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; 520 00:41:00,180 --> 00:41:03,770 líne + +). 521 00:41:03,770 --> 00:41:08,010 Bhí ar a dtugtar ár fráma roimhe _IO_fgets. 522 00:41:08,010 --> 00:41:10,720 Feicfidh tú a fheiceáil go bhfuil a lán le tógtha-i bhfeidhmeanna C, 523 00:41:10,720 --> 00:41:15,350 nuair a gheobhaidh tú an segfault, beidh ainmneacha fheidhm i ndáiríre cryptic 524 00:41:15,350 --> 00:41:18,090 mar seo _IO_fgets. 525 00:41:18,090 --> 00:41:21,770 Ach tá go bhfuil dul chun bhaineann leis an nglao fgets. 526 00:41:21,770 --> 00:41:25,850 Áit éigin taobh istigh anseo, tá muid ag segfaulting. 527 00:41:25,850 --> 00:41:30,340 Má táimid ar na hargóintí a fgets, is féidir linn a phriontáil maolán. 528 00:41:30,340 --> 00:41:41,180 A ligean ar a phriontáil mar - Ó, uimh. 529 00:41:48,980 --> 00:41:51,900 Níl Priontáil ag dul ag obair go díreach mar ba mhaith liom é. 530 00:41:55,460 --> 00:41:58,000 Ligean ar breathnú ar an gclár iarbhír. 531 00:42:02,200 --> 00:42:09,640 Is Mhaoláin sraith carachtar. Tá sé sraith carachtar 128 carachtar. 532 00:42:09,640 --> 00:42:14,980 Mar sin, nuair a rá liom Maolán a phriontáil, tá sé ag dul i gcló iad siúd 128 carachtair, 533 00:42:14,980 --> 00:42:18,300 a buille faoi thuairim mé é a bhfuil súil leis. 534 00:42:18,300 --> 00:42:21,390 Cad Bhí mé ag lorg go bhfuil a phriontáil ar an seoladh Maolán, 535 00:42:21,390 --> 00:42:23,680 ach ní a insint go mór liom i bhfad. 536 00:42:23,680 --> 00:42:30,770 Mar sin, nuair a tharlóidh mé a rá suas anseo x Maolán, taispeánann sé dom 0xbffff090, 537 00:42:30,770 --> 00:42:38,690 a bhfuil, más cuimhin leat as luaithe nó pointe éigin, bíonn Oxbffff a bheith ina réigiún Stack-ish. 538 00:42:38,690 --> 00:42:46,020 Bíonn an chairn a thosú áit éigin díreach faoi bhun 0xc000. 539 00:42:46,020 --> 00:42:51,890 Díreach ag féachaint ar an seoladh seo, tá a fhios agam go bhfuil maoláin ag tarlú ar an chruach. 540 00:42:51,890 --> 00:43:04,500 Restarting mo chlár, á reáchtáil, suas, Maolán chonaic muid go raibh an seicheamh seo de charachtair 541 00:43:04,500 --> 00:43:06,530 go bhfuil go leor brí i bhfad. 542 00:43:06,530 --> 00:43:12,270 Ansin priontáil comhad, cad comhad cuma mhaith? 543 00:43:15,120 --> 00:43:17,310 [Mac léinn] nialasacha. >> Yeah. 544 00:43:17,310 --> 00:43:22,610 Tá an comhad ina de * COMHAD cineál, mar sin tá sé pointeoir, 545 00:43:22,610 --> 00:43:26,610 agus is é luach na pointeoir nialasach. 546 00:43:26,610 --> 00:43:33,240 Dá bhrí sin tá fgets dul chun iarracht a léamh ón pointeoir ar bhealach indíreach, 547 00:43:33,240 --> 00:43:37,320 ach d'fhonn rochtain a fháil ar an pointeoir, tá sé le P leis na roghanna é. 548 00:43:37,320 --> 00:43:40,550 Nó, d'fhonn rochtain a fháil ar cad ba cheart é a bheith dírithe ar, dereferences sé é. 549 00:43:40,550 --> 00:43:43,810 Mar sin, tá dereferencing sé pointeoir nialasach agus segfaults. 550 00:43:46,600 --> 00:43:48,730 Raibh mé in ann a bheith atosú sé ann. 551 00:43:48,730 --> 00:43:52,170 Má táimid bhriseadh ag ár príomh phointe agus a rith, 552 00:43:52,170 --> 00:43:57,320 Is é an chéad líne de chód ruabhric * ainm = "nonexistent.txt"; 553 00:43:57,320 --> 00:44:00,870 Ba chóir a thugann leid mór go leor mar a cén fáth go mainneoidh an gclár seo. 554 00:44:00,870 --> 00:44:06,080 Clóscríobh eile a thugann dom ar an chéad líne eile, áit a oscailt mé an comhad seo, 555 00:44:06,080 --> 00:44:11,140 agus ansin mé a fháil láithreach i ár líne, áit nuair a bhuail mé amach romhainn, tá sé ag dul segfault. 556 00:44:11,140 --> 00:44:16,880 An bhfuil aon duine ag iarraidh a caith amach fáth a d'fhéadfadh muid a bheith segfaulting? 557 00:44:16,880 --> 00:44:19,130 Ní [mac léinn] chomhad ann. >> Yeah. 558 00:44:19,130 --> 00:44:22,250 Tá sé seo ceaptha a bheith ina leid 559 00:44:22,250 --> 00:44:29,570 go bhfuil aon uair tá tú ag oscailt comhad gá duit a sheiceáil go bhfuil an comhad i ndáiríre. 560 00:44:29,570 --> 00:44:31,510 Mar sin anseo, "nonexistent.txt"; 561 00:44:31,510 --> 00:44:34,700 Nuair a ainm fopen le haghaidh léamh, ní mór dúinn ansin a rá 562 00:44:34,700 --> 00:44:45,870 más rud é (comhad == NULLComment) agus a rá printf ("Níl an comhad ann!" 563 00:44:45,870 --> 00:44:56,340 nó - níos fearr fós - ainm comhaid); ais 1; 564 00:44:56,340 --> 00:45:00,300 Mar sin anois táimid ag seiceáil a fheiceáil má tá sé NULLComment 565 00:45:00,300 --> 00:45:03,930 roimh iarbhír ag leanúint agus ag iarraidh a léamh ón chomhad. 566 00:45:03,930 --> 00:45:08,800 Is féidir linn a remake sé ach a fheiceáil go bhfuil go n-oibríonn. 567 00:45:11,020 --> 00:45:14,970 I gceist agam a chur san áireamh ar líne nua. 568 00:45:21,090 --> 00:45:25,290 Mar sin, anois nach bhfuil nonexistent.txt ann. 569 00:45:26,890 --> 00:45:30,040 Ba chóir duit seiceáil i gcónaí le haghaidh an saghas rud. 570 00:45:30,040 --> 00:45:33,870 Ba chóir duit seiceáil i gcónaí a fheiceáil má fhilleann fopen NULLComment. 571 00:45:33,870 --> 00:45:38,170 Ba chóir duit seiceáil i gcónaí chun a chinntiú nach malloc ais NULLComment, 572 00:45:38,170 --> 00:45:41,410 nó eile agat segfault. 573 00:45:42,200 --> 00:45:45,930 >> Anois buggy4.c. 574 00:45:49,190 --> 00:45:58,440 Rith. Tá mé ag guessing tá sé seo ag fanacht le ionchuir nó looping b'fhéidir gan teorainn. 575 00:45:58,440 --> 00:46:01,870 Sea, tá sé looping gan teorainn. 576 00:46:01,870 --> 00:46:05,560 Mar sin, buggy4. Breathnaíonn sé cosúil go bhfuil muid looping gan teorainn. 577 00:46:05,560 --> 00:46:12,590 Is féidir linn a bhriseadh ar mó, á reáchtáil ár gclár. 578 00:46:12,590 --> 00:46:20,180 I gdb, chomh fada agus is an giorrúchán a úsáideann tú gan athbhrí 579 00:46:20,180 --> 00:46:23,420 nó giorrúcháin speisialta a chuireann siad ar fáil duit, 580 00:46:23,420 --> 00:46:29,020 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. 581 00:46:29,020 --> 00:46:33,730 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 582 00:46:33,730 --> 00:46:36,640 in ionad a bheith a bhuail n Cuir isteach, n Cuir isteach, n Iontráil. 583 00:46:36,640 --> 00:46:44,630 Breathnaíonn sé cosúil Tá mé i roinnt de chineál ar lúb a tá leagan eagar [i] chun 0. 584 00:46:44,630 --> 00:46:50,510 Breathnaíonn sé cosúil le riamh tá mé briseadh amach as seo le haghaidh lúb. 585 00:46:50,510 --> 00:46:54,780 Má chuirtear i gcló mé i, mar sin tá mé 2, ansin beidh mé ag dul amach romhainn. 586 00:46:54,780 --> 00:46:59,250 Beidh mé a phriontáil i, tá mé 3, ansin beidh mé ag dul amach romhainn. 587 00:46:59,250 --> 00:47:05,360 Feicfidh mé a phriontáil i agus tá mé 3. Next, a phriontáil i, tá mé 4. 588 00:47:05,360 --> 00:47:14,520 I ndáiríre, tá cló deachúlach (eagar), agus mar sin méid eagar 20. 589 00:47:16,310 --> 00:47:32,870 Ach tá sé cosúil Tá roinnt orduithe gdb speisialta chun dul go dtí go dtarlaíonn. 590 00:47:32,870 --> 00:47:37,620 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é. 591 00:47:37,620 --> 00:47:44,100 Mar sin, má táimid ag dul a choinneáil - 592 00:47:44,100 --> 00:47:47,120 Cad a bhí á rá agat? Cad a rinne tú a thabhairt suas? 593 00:47:47,120 --> 00:47:50,500 [Mac léinn] An bhfuil taispeáint i add - >> Yeah. Mar sin, a thaispeáint gur féidir liom cabhrú. 594 00:47:50,500 --> 00:47:54,530 Má táimid thaispeáint ach i, beidh sé a chur suas anseo cad é an luach i 595 00:47:54,530 --> 00:47:56,470 mar sin ní dóigh liom go bhfuil a phriontáil sé amach gach uair. 596 00:47:56,470 --> 00:48:02,930 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. 597 00:48:02,930 --> 00:48:08,530 Rud ag dul terribly mícheart, agus i á athshocrú chun 0. 598 00:48:13,330 --> 00:48:22,220 Ag Breathnú ar an buggy4.c, féach againn ar fad a tharlaíonn go bhfuil eagar o [5]; 599 00:48:22,220 --> 00:48:26,200 haghaidh (i = 0; i <= deachúlach (eagar); i + +) 600 00:48:26,200 --> 00:48:28,550 eagar [i] = 0; 601 00:48:28,550 --> 00:48:31,390 Cad a fheicimid go bhfuil mícheart anseo? 602 00:48:31,390 --> 00:48:39,480 Mar leid, nuair a bhí mé ag déanamh an gdb buggy4 - a ligean ar bhriseadh is mó, á reáchtáil - 603 00:48:39,480 --> 00:48:45,980 I raibh cló deachúlach (eagar) ach a fheiceáil cad é an coinníoll áit ar cheart dom briseadh ar deireadh thiar amach. 604 00:48:47,690 --> 00:48:51,100 Cá bhfuil mé? An raibh mé ag siúl? 605 00:48:51,100 --> 00:48:54,280 Ní raibh mé a dhearbhú go fóill. 606 00:48:54,280 --> 00:48:58,680 Mar sin, is féidir MÉID a phriontáil (eagar) agus sin 20, 607 00:48:58,680 --> 00:49:06,690 a bhfuiltear ag súil ó mo sraith de mhéid 5 agus tá sé de 5 slánuimhreacha, 608 00:49:06,690 --> 00:49:12,410 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. 609 00:49:12,410 --> 00:49:14,780 Dá bhrí sin tá deachúlach (eagar) 20. 610 00:49:14,780 --> 00:49:17,420 Cad ba cheart é seo a? 611 00:49:17,420 --> 00:49:21,720 [Mac léinn] Roinnte deachúlach (o). >> Yeah, / Is uimhir (o). 612 00:49:21,720 --> 00:49:30,630 Breathnaíonn sé cosúil le níl fadhb fós anseo. I mo thuairimse, ba chóir é seo a bheith díreach < 613 00:49:30,630 --> 00:49:36,960 ós rud é tá sé deas i gcónaí i bhfad riamh 00:49:44,860 Anois, a ligean smaoineamh ar cén fáth go raibh sé seo briste i ndáiríre. 615 00:49:44,860 --> 00:49:53,370 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? 616 00:50:01,300 --> 00:50:09,350 Is é an rud amháin taobh istigh de anseo go bhfuil ag tarlú go eagar [i] á shocrú chun 0. 617 00:50:09,350 --> 00:50:15,350 Mar sin, ar bhealach, tá an líne de chód cúis lenár n slánuimhir liom a shocrú chun 0. 618 00:50:16,730 --> 00:50:23,130 Níorbh fhéidir [mac léinn] sé a bheith mar tá sáraitheach é an gcuimhne ar an chuid i 619 00:50:23,130 --> 00:50:27,970 nuair is cuí léi tá sé an chéad bhall eile eagar? >> [Bowden] Tá. 620 00:50:27,970 --> 00:50:33,880 Nuair a táimid ag dul thar an deireadh ár sraith, 621 00:50:33,880 --> 00:50:39,870 Tá ar bhealach go mbeidh spás go bhfuil muid ag sáraitheach sáraitheach an luach i. 622 00:50:39,870 --> 00:50:48,030 Agus mar sin má táimid i buggy4, briseadh is mó, á reáchtáil, 623 00:50:48,030 --> 00:50:53,120 a ligean ar a phriontáil seoladh i. 624 00:50:53,120 --> 00:50:57,280 Breathnaíonn sé cosúil go bhfuil sé bffff124. 625 00:50:57,280 --> 00:51:03,930 Anois, a ligean taispeáin seoladh sraith [0]. 110. 626 00:51:03,930 --> 00:51:06,290 Cad mar gheall ar [1]? 114. 627 00:51:06,290 --> 00:51:07,920 [2], 118. 628 00:51:07,920 --> 00:51:14,530 11c, 120. eagar [5] Tá bfff124. 629 00:51:14,530 --> 00:51:26,990 Mar sin, sraith [5] Tá an seoladh céanna i, rud a chiallaíonn go bhfuil eagar [5] i. 630 00:51:26,990 --> 00:51:30,720 Má tá siad an seoladh céanna, tá siad an rud céanna. 631 00:51:30,720 --> 00:51:38,410 Mar sin, nuair a leag muid sraith [5] chun 0, tá muid ag leagan síos mé 0. 632 00:51:38,410 --> 00:51:46,070 Agus má cheapann tú faoi seo i dtéarmaí an chairn, 633 00:51:46,070 --> 00:51:55,590 slánuimhir i dhearbhú den chéad uair, rud a chiallaíonn go bhfaigheann i roinnt spáis ar an chruach. 634 00:51:55,590 --> 00:52:04,730 Ansin eagar [5] a leithdháileadh, agus mar sin ansin 20 bytes a leithdháileadh ar an chruach. 635 00:52:04,730 --> 00:52:08,400 Mar sin, faigheann i leithroinnt ar an gcéad, ansin na 20 bytes a fháil leithdháileadh. 636 00:52:08,400 --> 00:52:11,400 Mar sin, a tharlaíonn i gceart roimh an eagar, 637 00:52:11,400 --> 00:52:19,230 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, 638 00:52:19,230 --> 00:52:28,520 nuair innéacs tú isteach eagar, táimid ag ráthú go bhfuil an seasamh 0 sa réimse 639 00:52:28,520 --> 00:52:31,970 i gcónaí a tharlaíonn roimh an chéad staid sa eagar. 640 00:52:31,970 --> 00:52:35,900 Tá an cineál conas a tharraing mé an tseachtain seo caite. 641 00:52:35,900 --> 00:52:42,210 Fógra go bhfuil ar bun againn seoladh 0 agus ag barr againn Max seoladh. 642 00:52:42,210 --> 00:52:44,880 Tá an chairn ag fás i gcónaí síos. 643 00:52:48,100 --> 00:52:53,500 Ligean le rá againn a dháileadh i. 644 00:52:53,500 --> 00:52:59,680 Leithdháileadh muid slánuimhir i, rud a chiallaíonn ligean ach a rá suas anseo slánuimhir i Faigheann leithdháilte. 645 00:52:59,680 --> 00:53:06,420 Ansin againn leithdháileadh ár sraith de 5 slánuimhreacha, rud a chiallaíonn go thíos go bhfuil, 646 00:53:06,420 --> 00:53:11,230 ós rud é go bhfuil an chairn ag fás síos, na 5 slánuimhreacha a fháil leithdháileadh. 647 00:53:11,230 --> 00:53:15,900 Ach mar gheall ar conas a oibríonn eagair, táimid ag ráthú go bhfuil an chéad staid sa réimse 648 00:53:15,900 --> 00:53:22,260 i gcónaí ag seoladh níos lú ná an dara rud ar an eagar. 649 00:53:22,260 --> 00:53:28,270 Mar sin, tá 0 seasamh eagar i gcónaí le tarlú chéad uair i gcuimhne, 650 00:53:28,270 --> 00:53:30,700 cé go bhfuil 1 seasamh eagar a tharlóidh ina dhiaidh sin 651 00:53:30,700 --> 00:53:33,310 agus tá 2 seasamh eagar a tharlóidh ina dhiaidh sin, 652 00:53:33,310 --> 00:53:37,900 rud a chiallaíonn go mbeadh 0 seasamh eagar tarlú áit éigin síos anseo, 653 00:53:37,900 --> 00:53:40,690 Bheadh ​​1 seasamh eagar tarlú thuas go 654 00:53:40,690 --> 00:53:45,530 mar ciallaíonn bogadh suas seoltaí níos airde toisc go bhfuil an seoladh is mó suas anseo. 655 00:53:45,530 --> 00:53:50,490 Mar sin, sraith [0] síos anseo, eagar [1] suas anseo, eagar [2] suas anseo, eagar [3] suas anseo. 656 00:53:50,490 --> 00:53:55,620 Fógra conas roimh leithdháileadh againn slánuimhir i léir ar an mbealach suas anseo, 657 00:53:55,620 --> 00:54:01,040 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. 658 00:54:01,040 --> 00:54:07,640 Tharlaíonn sé ach ionas go mbeidh sraith [5], atá ar cheann seasamh thar ár sraith, 659 00:54:07,640 --> 00:54:13,010 é go díreach nuair is slánuimhir a tharla mé a bheith ar fáil. 660 00:54:13,010 --> 00:54:16,920 Mar sin, go bhfuil an pointe nuair a tharlóidh dúinn a bheith ag bualadh an spás ar an chruach 661 00:54:16,920 --> 00:54:21,680 Leithdháileadh gur le haghaidh slánuimhir i, agus táimid ag leagan síos go dtí 0. 662 00:54:21,680 --> 00:54:26,160 >> Sin é an chaoi go n-oibríonn. Ceisteanna? Yeah. 663 00:54:26,160 --> 00:54:30,710 [Mac léinn] Ná bac leis. Maith go leor. 664 00:54:30,710 --> 00:54:33,090 [Mac léinn] Conas a dhéanann tú a sheachaint na saghas earráidí? 665 00:54:33,090 --> 00:54:41,190 Tá na saghas earráidí? Ná húsáid C mar do teanga cláir. 666 00:54:41,190 --> 00:54:45,840 Bain úsáid as teanga go bhfuil bounds eagar a sheiceáil. 667 00:54:45,840 --> 00:54:55,900 Chomh fada is a bhfuil tú go cúramach, is gá duit ach a sheachaint ag dul thar an bounds de do eagar. 668 00:54:55,900 --> 00:54:58,300 [Mac léinn] Mar sin anseo nuair a chuaigh muid thar an bounds de do eagar - 669 00:54:58,300 --> 00:55:01,840 [Bowden] Sin an áit a thosú rudaí ag dul mícheart. >> [Mac léinn] Oh, maith go leor. 670 00:55:01,840 --> 00:55:05,730 Chomh fada is a fhanann tú laistigh den chuimhne leithdháilte le haghaidh do sraith, tá tú breá. 671 00:55:05,730 --> 00:55:12,400 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 - 672 00:55:12,400 --> 00:55:16,500 Téann sé go dtí tús an eagar, ansin téann sé 1,000 post i ndiaidh agus leagann sé 0. 673 00:55:16,500 --> 00:55:20,000 Nach ndéanann sé aon seiceáil go OH, ní hionann sin i ndáiríre 1000 rudaí ann. 674 00:55:20,000 --> 00:55:22,750 1000 ar bhealach níos faide ná cad ba chóir dom a bheith ag athrú, 675 00:55:22,750 --> 00:55:26,940 cé go Java nó rud éigin go mbainfidh tú a fháil eagar as innéacs bounds 676 00:55:26,940 --> 00:55:29,820 nó innéacs as eisceacht bounds. 677 00:55:29,820 --> 00:55:33,950 Sin an fáth a bhfuil a lán de na teangacha leibhéal níos airde na rudaí seo 678 00:55:33,950 --> 00:55:37,340 i gcás má théann tú thar an bounds an eagar, theipeann ort 679 00:55:37,340 --> 00:55:40,070 ionas nach féidir leat rudaí a athrú ó thíos tú 680 00:55:40,070 --> 00:55:42,590 agus ansin a théann rudaí i bhfad níos measa ná díreach ag fáil eisceacht 681 00:55:42,590 --> 00:55:44,940 ag rá go ndeachaigh tú thar dheireadh na eagar. 682 00:55:44,940 --> 00:55:50,970 [Mac léinn] Agus ba chóir sin ní mór dúinn a athrú ach an <= dtí díreach > [Bowden] Yeah. 683 00:55:50,970 --> 00:55:54,800 Ba chóir a thabhairt 00:55:59,560 ós rud é go deachúlach (eagar) 20, ach ba mhaith linn ach 5. >> [Mac léinn] Ceart. 685 00:55:59,560 --> 00:56:04,060 Ceisteanna níos mó? Maith go leor. 686 00:56:04,060 --> 00:56:07,380 >> [Mac léinn] Tá mé ceist. >> Yeah. 687 00:56:07,380 --> 00:56:16,440 [Mac léinn] Cad é an athróg eagar iarbhír? 688 00:56:16,440 --> 00:56:20,000 [Bowden] Cosúil cad is eagar? 689 00:56:20,000 --> 00:56:24,930 Is Eagar féin siombail. 690 00:56:24,930 --> 00:56:31,490 Tá sé ach an seoladh an tús an 20 bytes go bhfuil muid ag tagairt. 691 00:56:31,490 --> 00:56:38,070 Is féidir leat smaoineamh ar é mar pointeoir, ach tá sé ina pointeoir tairiseach. 692 00:56:38,070 --> 00:56:44,140 Chomh luath agus rudaí a fháil le chéile, nach bhfuil an raon athróg ann níos mó. 693 00:56:44,140 --> 00:56:48,210 [Mac léinn] Mar sin, ní conas a fháil ar an méid eagar? 694 00:56:48,210 --> 00:56:54,130 Tagraíonn Méid eagar le méid sin bloc go dtagraíonn an siombal a. 695 00:56:54,130 --> 00:57:01,240 Nuair a dhéanann mé rud éigin cosúil le printf ("% p \ n", eagar); 696 00:57:01,240 --> 00:57:05,140 a ligean ar rith sé. 697 00:57:12,960 --> 00:57:15,530 Cad a rinne mé díreach tar éis cearr? 698 00:57:15,530 --> 00:57:19,220 Eagar 'eagar' dhearbhú anseo. 699 00:57:20,820 --> 00:57:23,200 Ó, suas anseo. 700 00:57:23,200 --> 00:57:31,250 Clang Is cliste, agus a tharlaíonn sé a thabhairt faoi deara gur dhearbhaigh mé an sraith mar 5 eilimintí 701 00:57:31,250 --> 00:57:34,540 ach tá mé ag innéacsú i seasamh 1000. 702 00:57:34,540 --> 00:57:38,450 Is féidir é sin a dhéanamh mar go bhfuil seo ach tairisigh. 703 00:57:38,450 --> 00:57:43,370 Is féidir é ach dul go dtí seo i noticing go bhfuil mé ag dul thar na teorainneacha ar an eagar. 704 00:57:43,370 --> 00:57:46,880 Ach fógra roimh nuair a bhí againn liom a bheith mícheart, 705 00:57:46,880 --> 00:57:51,040 ní féidir é a chinneadh, b'fhéidir, cé mhéad luachanna d'fhéadfadh a chur ar aghaidh, 706 00:57:51,040 --> 00:57:55,540 mar sin ní féidir é a chinneadh go raibh sé ag dul i thar dheireadh na eagar. 707 00:57:55,540 --> 00:57:59,430 Sin díreach clang a bheith cliste. 708 00:57:59,430 --> 00:58:03,340 >> Ach a dhéanamh anois buggy4. Mar sin, cad eile mé ag déanamh mícheart? 709 00:58:03,340 --> 00:58:05,970 Hintuigthe dhearbhú fheidhm leabharlainne 'printf'. 710 00:58:05,970 --> 00:58:14,960 Tá mé ag dul go dtí gur mian a chur san áireamh # . 711 00:58:14,960 --> 00:58:18,710 Maith go leor. Anois reáchtáil buggy4. 712 00:58:18,710 --> 00:58:24,840 Priontáil luach an eagar mar a rinne mé anseo, a phriontáil é mar pointeoir 713 00:58:24,840 --> 00:58:30,060 priontaí rud éigin go Breathnaíonn mar seo - bfb8805c - a bhfuil roinnt seoladh 714 00:58:30,060 --> 00:58:33,450 go bhfuil sa réigiún Stack-ish. 715 00:58:33,450 --> 00:58:41,820 Is é Eagar féin cosúil le pointeoir, ach nach bhfuil sé pointeoir iarbhír, 716 00:58:41,820 --> 00:58:45,410 ós rud é go pointeoir rialta féidir linn a athrú. 717 00:58:45,410 --> 00:58:54,700 Eagar é ach cuid tairiseach. An 20 bloic de chuimhne tosú ag 0xbfb8805c sheoladh. 718 00:58:54,700 --> 00:59:09,020 Mar sin, bfb8805c tríd an seoladh +20--nó buille faoi thuairim mé -20 - 719 00:59:09,020 --> 00:59:17,400 Is léir an chuimhne leithdháilte don eagar. 720 00:59:17,400 --> 00:59:20,350 Eagar, nach bhfuil an athróg féin a stóráil áit ar bith. 721 00:59:20,350 --> 00:59:27,660 Nuair a bhíonn tú ag a thiomsú, an tiomsaitheoir - tonn lámh ar sé - 722 00:59:27,660 --> 00:59:33,060 ach beidh an tiomsaitheoir a úsáid ach nuair a fhios sé eagar a bheith. 723 00:59:33,060 --> 00:59:36,090 Fhios sé nuair a thosaíonn an eagar, 724 00:59:36,090 --> 00:59:40,910 agus mar sin is féidir sé i gcónaí a dhéanamh ach rudaí i dtéarmaí offsets ón tús. 725 00:59:40,910 --> 00:59:43,960 Ní chuireann sé de dhíth athróg féin eagar chun ionadaíocht a dhéanamh. 726 00:59:43,960 --> 00:59:53,730 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, 727 00:59:53,730 --> 00:59:57,830 agus anois p bhfuil iarbhír ann ar an chruach. 728 00:59:57,830 --> 01:00:01,950 Tá mé saor in aisce a athrú lch. Is féidir liom a dhéanamh p = malloc. 729 01:00:01,950 --> 01:00:06,500 Mar sin, chuir sé ar dtús chun eagar; anois pointí sé le roinnt spáis ar an gcarn. 730 01:00:06,500 --> 01:00:09,620 Ní féidir liom a dhéanamh eagar; malloc. 731 01:00:09,620 --> 01:00:13,710 Má tá clang cliste, beidh sé yell ag dom ceart as an bat. 732 01:00:17,000 --> 01:00:21,430 I ndáiríre, tá mé cinnte go leor go mbeadh GCC é seo a dhéanamh chomh maith. 733 01:00:21,430 --> 01:00:25,010 Mar sin, cineál eagar 'o [5]' Ní insannta. 734 01:00:25,010 --> 01:00:28,040 Ní féidir leat rud éigin a shannadh do chineál eagar 735 01:00:28,040 --> 01:00:30,500 toisc go bhfuil sraith ach tairiseach. 736 01:00:30,500 --> 01:00:34,760 Is siombail iad na tagairtí sin 20 bytes. Ní féidir liom a athrú. 737 01:00:34,760 --> 01:00:37,690 >> [Mac léinn] Agus ina bhfuil an méid de na eagar stóráil? 738 01:00:37,690 --> 01:00:40,670 [Bowden] Níl sé stóráilte áit ar bith. Tá sé nuair atá sé thiomsú é. 739 01:00:40,670 --> 01:00:46,310 Mar sin, ina bhfuil an méid eagar stóráil? 740 01:00:46,310 --> 01:00:51,870 Is féidir leat úsáid ach amháin deachúlach (eagar) taobh istigh den fheidhm go bhfuil an réimse go bhfuil sí. 741 01:00:51,870 --> 01:01:03,150 Mar sin, má dhéanann mé roinnt fheidhm, foo, agus is féidir liom (slánuimhir eagar []) 742 01:01:03,150 --> 01:01:10,450 printf ("% d \ n", Is uimhir (eagar)); 743 01:01:10,450 --> 01:01:21,330 agus ansin síos anseo mé glaoch foo (eagar); 744 01:01:21,330 --> 01:01:24,840 taobh istigh den fheidhm seo - a ligean ar rith sé. 745 01:01:34,200 --> 01:01:36,840 Is é seo an clang a bheith cliste arís. 746 01:01:36,840 --> 01:01:43,890 Tá sé ag insint dom go bhfuil Is uimhir ar paraiméadar fheidhm eagar 747 01:01:43,890 --> 01:01:46,690 Cuirfear ar ais méid '* o'. 748 01:01:46,690 --> 01:01:55,150 Bheadh ​​sé seo earráid más rud é nach bhfuil sé cad a bhí mé a tharlóidh. 749 01:01:55,150 --> 01:01:58,960 A ligean ar dul i ndáiríre as Werror. 750 01:02:14,950 --> 01:02:17,590 Rabhadh. Rabhaidh Tá fíneáil. 751 01:02:17,590 --> 01:02:19,960 Beidh sé le chéile go fóill chomh fada agus tá sé rabhadh. 752 01:02:19,960 --> 01:02:22,910 Tá. / A.out dul i gcló 4. 753 01:02:22,910 --> 01:02:28,650 Is é an rabhadh a bhí a ghintear go táscaire soiléir cad a chuaigh mícheart. 754 01:02:28,650 --> 01:02:34,120 Tá an sraith slánuimhir ag dul díreach a phriontáil Is uimhir (o *). 755 01:02:34,120 --> 01:02:39,790 Fiú má chuir mé sraith [5] i anseo, tá sé fós ag dul díreach a phriontáil Is uimhir (o *). 756 01:02:39,790 --> 01:02:47,440 Mar sin, a luaithe is tú pas a fháil sé isteach ar fheidhm, ar an idirdhealú idir eagair agus leideanna 757 01:02:47,440 --> 01:02:49,670 Is nonexistent. 758 01:02:49,670 --> 01:02:52,640 A tharlaíonn sé seo a bheith ina sraith dearbhaíodh go ar an chruach, 759 01:02:52,640 --> 01:02:58,300 ach chomh luath agus is mar a théann muid go luach, go 0xbf blah, blah, blah isteach an fheidhm, 760 01:02:58,300 --> 01:03:03,350 ansin pointí seo pointeoir leis an eagar ar an chruach. 761 01:03:03,350 --> 01:03:08,310 Mar sin, ciallaíonn sé go bhfuil feidhm Is uimhir amháin san fheidhm gur dearbhaíodh an eagar, 762 01:03:08,310 --> 01:03:11,230 rud a chiallaíonn go nuair a bhíonn tú le chéile an fheidhm seo, 763 01:03:11,230 --> 01:03:17,330 nuair a théann clang tríd an fheidhm seo, Feiceann sé eagar Is sraith slánuimhir de mhéid 5. 764 01:03:17,330 --> 01:03:20,640 Mar sin, ansin a fheiceann sé deachúlach (eagar). Bhuel, sin é 20. 765 01:03:20,640 --> 01:03:26,440 Sin i ndáiríre conas a oibríonn Is uimhir bunúsach le haghaidh beagnach gach cás. 766 01:03:26,440 --> 01:03:31,150 Ní Is uimhir feidhm; tá sé d'oibreoir. 767 01:03:31,150 --> 01:03:33,570 Ní gá duit glaoch ar an fheidhm is féidir MÉID a. 768 01:03:33,570 --> 01:03:38,280 Is uimhir (o), beidh an tiomsaitheoir aistriú go díreach go dtí 4. 769 01:03:41,480 --> 01:03:43,700 Fuair ​​sé? Maith go leor. 770 01:03:43,700 --> 01:03:47,520 >> [Mac léinn] Mar sin, cad é an difríocht idir deachúlach (eagar) i príomhghnéithe agus i foo? 771 01:03:47,520 --> 01:03:52,840 Tá sé seo toisc go bhfuil muid ag rá deachúlach (eagar), atá de * slánuimhir cineál, 772 01:03:52,840 --> 01:03:57,120 de bhrí go bhfuil eagar síos anseo nach * slánuimhir cineál, tá sé le sraith slánuimhir. 773 01:03:57,120 --> 01:04:04,540 >> [Mac léinn] Mar sin má bhí tú an paraiméadar i sraith [] in ionad sraith * o, 774 01:04:04,540 --> 01:04:09,230 a bheadh ​​i gceist go bhféadfaí tú a athrú go fóill eagar mar anois tá sé ina pointeoir? 775 01:04:09,230 --> 01:04:14,250 [Bowden] Cosúil seo? >> [Mac léinn] Yeah. Is féidir leat athrú eagar laistigh d'fheidhm anois? 776 01:04:14,250 --> 01:04:18,420 [Bowden] D'fhéadfaí tú a athrú eagar sa dá chás. 777 01:04:18,420 --> 01:04:23,130 Sa dá de na cásanna sin tá tú saor chun a rá eagar [4] = 0. 778 01:04:23,130 --> 01:04:26,590 [Mac léinn] Ach is féidir leat pointe eagar a dhéanamh ar rud éigin eile? 779 01:04:26,590 --> 01:04:30,230 [Bowden] Oh. Yeah. I gceachtar cás - >> [mac léinn] Yeah. 780 01:04:30,230 --> 01:04:38,410 [Bowden] an t-idirdhealú idir eagar [] agus le sraith * slánuimhir, tá none. 781 01:04:38,410 --> 01:04:42,570 Is féidir leat freisin roinnt sraith iltoiseacha i anseo 782 01:04:42,570 --> 01:04:47,050 do roinnt error áisiúil, ach tá sé fós ach pointeoir. 783 01:04:47,050 --> 01:04:56,400 Ciallaíonn sé seo go bhfuil mé saor in aisce eagar a dhéanamh = malloc (deachúlach (o)); agus anois pointe éigin eile. 784 01:04:56,400 --> 01:04:59,610 Ach díreach mar conas a oibríonn seo go deo agus i gcónaí, 785 01:04:59,610 --> 01:05:03,210 athrú seo sraith trí é a dhéanamh pointe chun rud éigin eile 786 01:05:03,210 --> 01:05:07,570 nach n-athraíonn an eagar síos anseo mar tá sé cóip den argóint, 787 01:05:07,570 --> 01:05:10,780 nach bhfuil sé pointeoir leis an argóint. 788 01:05:10,780 --> 01:05:16,070 Agus i ndáiríre, díreach mar a léiriú níos mó go bhfuil sé díreach mar an gcéanna - 789 01:05:16,070 --> 01:05:21,100 chonaic muid cheana féin cad priontaí eagar priontáil - 790 01:05:21,100 --> 01:05:31,410 cad más rud é phriontáil againn seoladh an eagar nó ar an seoladh an seoladh an eagar 791 01:05:31,410 --> 01:05:36,290 le ceachtar de na? 792 01:05:41,770 --> 01:05:45,220 A ligean ar neamhaird a dhéanamh an gceann seo. 793 01:05:48,140 --> 01:05:51,660 Maith go leor. Tá sé seo breá. Tá sé ag rith anois. / A.out. 794 01:05:51,660 --> 01:06:00,220 Eagar Priontáil, ansin priontáil seoladh an eagar iad, an rud céanna. 795 01:06:00,220 --> 01:06:02,870 Eagar nach bhfuil ach ann. 796 01:06:02,870 --> 01:06:08,190 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. 797 01:06:08,190 --> 01:06:11,940 Priontáil an seoladh an eagar, go maith, ní eagar ann. 798 01:06:11,940 --> 01:06:17,200 Ní chuireann sé go mbeadh seoladh, agus mar sin priontaí sé ach an seoladh sin 20 bytes. 799 01:06:20,820 --> 01:06:28,150 Chomh luath agus tú a thiomsú síos, is maith i do buggy4 le chéile. / A.out, 800 01:06:28,150 --> 01:06:30,340 eagar é nonexistent. 801 01:06:30,340 --> 01:06:33,640 Leideanna ann. Nach bhfuil arrays. 802 01:06:34,300 --> 01:06:38,060 Na bloic de chuimhne a ionadaíonn do na eagar fós ann, 803 01:06:38,060 --> 01:06:43,270 ach ní dhéanann an sraith athraitheach agus athróga den chineál ann. 804 01:06:46,260 --> 01:06:50,270 Glacfar iad ar nós na difríochtaí is mó idir eagair agus leideanna 805 01:06:50,270 --> 01:06:55,590 Tá a luaithe is a dhéanann tú glaonna feidhm, níl aon difríocht. 806 01:06:55,590 --> 01:07:00,460 Ach taobh istigh na feidhme go bhfuil an raon féin dhearbhú, oibríonn Is uimhir éagsúil 807 01:07:00,460 --> 01:07:05,190 ós rud é tá tú ag priontáil an méid de na bloic in ionad an méid de na cineál, 808 01:07:05,190 --> 01:07:08,950 agus ní féidir leat é a athrú mar tá sé ina siombail. 809 01:07:08,950 --> 01:07:14,370 Priontáil an rud agus seoladh an rud priontaí an rud céanna. 810 01:07:14,370 --> 01:07:18,480 Agus sin go leor i bhfad é. 811 01:07:18,480 --> 01:07:20,820 [Mac léinn] Níorbh fhéidir leat a rá go bhfuil ceann níos mó ama? 812 01:07:21,170 --> 01:07:24,170 D'fhéadfadh mé caillte rud éigin. 813 01:07:24,170 --> 01:07:29,260 Priontaí eagar Priontáil agus seoladh an eagar an rud céanna, 814 01:07:29,260 --> 01:07:33,180 ach má phriontáil duit pointeoir i gcoinne an seoladh an pointeoir, 815 01:07:33,180 --> 01:07:36,010 priontaí an rud amháin an seoladh ar cad tá tú ag dírithe ar, 816 01:07:36,010 --> 01:07:40,360 an ceann eile priontaí seoladh an pointeoir ar an chruach. 817 01:07:40,360 --> 01:07:47,040 Is féidir leat athrú pointeoir; ní féidir leat athrú siombail eagar. 818 01:07:47,740 --> 01:07:53,270 Agus is é Is uimhir pointeoir ag dul i gcló ar an méid den chineál pointeoir. 819 01:07:53,270 --> 01:07:57,470 Mar sin, o Tá * p deachúlach (p) dul i gcló 4, 820 01:07:57,470 --> 01:08:04,110 ach o eagar [5] Tá cló deachúlach (eagar) dul i gcló 20. 821 01:08:04,110 --> 01:08:07,480 [Mac léinn] Mar sin slánuimhir eagar [5] a phriontáil 20? >> Tá. 822 01:08:07,480 --> 01:08:13,300 Sin an fáth taobh istigh de buggy4 nuair a úsáidtear é a bheith deachúlach (eagar) 823 01:08:13,300 --> 01:08:16,660 seo a bhí á dhéanamh i <20, is é nach cad a bhí againn. 824 01:08:16,660 --> 01:08:20,880 Ba mhaith linn i <5. >> [Mac léinn] Maith go leor. 825 01:08:20,880 --> 01:08:25,569 [Bowden] Agus ansin chomh luath agus a thosaíonn tú ag dul leis na feidhmeanna, 826 01:08:25,569 --> 01:08:34,340 más rud é go raibh muid o * p = eagar; 827 01:08:34,340 --> 01:08:39,779 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, 828 01:08:39,779 --> 01:08:43,710 ach amháin i gcás an fhadhb Is uimhir agus an fhadhb a athrú. 829 01:08:43,710 --> 01:08:49,810 Ach p [0] = 1; mar an gcéanna le rá eagar [0] = 1; 830 01:08:49,810 --> 01:08:55,600 Agus chomh luath agus a deirimid foo (eagar); nó foo (p); 831 01:08:55,600 --> 01:08:59,760 taobh istigh den fheidhm foo, is é seo an glao céanna faoi dhó. 832 01:08:59,760 --> 01:09:03,350 Níl aon difríocht idir an dá glaonna. 833 01:09:07,029 --> 01:09:11,080 >> Tá ag gach duine go maith ar sin? Maith go leor. 834 01:09:14,620 --> 01:09:17,950 Tá 10 nóiméad. 835 01:09:17,950 --> 01:09:28,319 >> Beidh muid iarracht a fháil tríd an gclár seo Typer Hacker, 836 01:09:28,319 --> 01:09:32,350 an láithreán gréasáin seo, a tháinig amach an bhliain seo caite nó rud éigin. 837 01:09:34,149 --> 01:09:41,100 Tá sé ceaptha ach a bheith cosúil le chlóscríobhann tú go randamach agus priontaí sé amach - 838 01:09:41,100 --> 01:09:46,729 Cibé rud a comhad a tharlaíonn sé a bheith luchtaithe cad tá sé cosúil le atá tú ag clóscríobh. 839 01:09:46,729 --> 01:09:52,069 Breathnaíonn sé cosúil le roinnt de chineál cód córas oibriúcháin. 840 01:09:53,760 --> 01:09:56,890 Sin cad ba mhaith linn a chur i bhfeidhm. 841 01:10:08,560 --> 01:10:11,690 Ba chóir duit a bheith inrite dénártha ainmnithe hacker_typer 842 01:10:11,690 --> 01:10:14,350 a thógann san argóint amháin, an comhad a "cineál hacker." 843 01:10:14,350 --> 01:10:16,480 Ba chóir go Ag reáchtáil an inrite soiléir ar an scáileán 844 01:10:16,480 --> 01:10:20,850 agus a phriontáil amach ansin roghnaigh as an gcomhad ritheadh ​​i gach uair an t-úsáideoir cófraí ​​eochair. 845 01:10:20,850 --> 01:10:24,990 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 846 01:10:24,990 --> 01:10:27,810 is é sin an argóint. 847 01:10:29,880 --> 01:10:34,350 Beidh mé go leor i bhfad a insint duit cad iad na rudaí táimid ag dul go mór a fháil amach. 848 01:10:34,350 --> 01:10:36,440 Ach ba mhaith linn a sheiceáil amach an leabharlann termios. 849 01:10:36,440 --> 01:10:44,840 Ní raibh mé riamh úsáid as an leabharlann i mo shaol ar fad, mar sin tá sé chun críocha an-bheag. 850 01:10:44,840 --> 01:10:48,610 Ach tá sé seo ag dul a bheith ar an leabharlann féidir linn a úsáid le caith amach an carachtar bhuail tú 851 01:10:48,610 --> 01:10:52,390 nuair atá tú ag clóscríobh i caighdeán isteach 852 01:10:56,970 --> 01:11:05,840 Mar sin, hacker_typer.c, agus táimid ag dul a iarraidh a chur san áireamh # . 853 01:11:05,840 --> 01:11:12,870 Ag Breathnú ar an leathanach fear do termios - I'm guessing sé críochfort OS nó rud éigin - 854 01:11:12,870 --> 01:11:16,240 Níl a fhios agam conas é a léamh. 855 01:11:16,240 --> 01:11:21,040 Ag Breathnú ar an seo, a deir sé a chur san áireamh ar na 2 chomhad, mar sin beidh orainn a dhéanamh. 856 01:11:37,620 --> 01:11:46,820 >> 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. 857 01:11:46,820 --> 01:11:52,420 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? 858 01:11:52,420 --> 01:11:56,480 [Mac léinn] Má ionann argc é. >> [Bowden] Yeah. 859 01:11:56,480 --> 01:12:21,250 Mar sin, más rud é (argc = 2!) Printf ("úsáid:% s [comhad a oscailt]"). 860 01:12:21,250 --> 01:12:32,750 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 - 861 01:12:32,750 --> 01:12:36,240 Feicfidh tú a fheiceáil a deir sé úsáid:. / hacker_typer, 862 01:12:36,240 --> 01:12:39,770 agus ansin ba chóir go mbeadh an dara hargóint an comhad ba mhaith liom a oscailt. 863 01:12:58,430 --> 01:13:01,260 Anois, cad a dhéanfaidh mé? 864 01:13:01,260 --> 01:13:08,490 Ba mhaith liom a léamh ó chomhad seo. Conas is féidir liom a léamh ó chomhad? 865 01:13:08,490 --> 01:13:11,920 [Mac léinn] ar oscailt agat ar dtús. >> Yeah. 866 01:13:11,920 --> 01:13:15,010 Mar sin, fopen. Cad a dhéanann fopen cuma mhaith? 867 01:13:15,010 --> 01:13:22,980 [Mac léinn] Ainm. >> Is é [Bowden] Filename ag dul a bheith argv [1]. 868 01:13:22,980 --> 01:13:26,110 [Mac léinn] Agus ansin cad ba mhaith leat a dhéanamh leis é, mar sin an - >> [Bowden] Yeah. 869 01:13:26,110 --> 01:13:28,740 Mar sin, más rud é nach raibh tú cuimhneamh, ach d'fhéadfaí tú a dhéanamh fopen fear, 870 01:13:28,740 --> 01:13:32,960 nuair atá sé ag dul a bheith ina cosán * CONST ruabhric áit a bhfuil cosán ainm comhaid, 871 01:13:32,960 --> 01:13:34,970 Modh * CONST Char. 872 01:13:34,970 --> 01:13:38,660 Má tharlaíonn tú a ní cuimhin cad é modh, ansin is féidir leat breathnú ar mód. 873 01:13:38,660 --> 01:13:44,660 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í. 874 01:13:44,660 --> 01:13:49,790 Mar sin, mé cineál / modh chun cuardach a dhéanamh mód. 875 01:13:49,790 --> 01:13:57,130 n agus N cad is féidir leat é a úsáid le timthriall trí na cluichí cuardaigh. 876 01:13:57,130 --> 01:13:59,800 Seo a deir sé na pointí modh argóint teaghrán 877 01:13:59,800 --> 01:14:01,930 tús le ceann de na seichimh seo a leanas. 878 01:14:01,930 --> 01:14:06,480 Mar sin, r, gcomhad téacs Oscailte chun é a léamh. Sin cad ba mhaith linn a dhéanamh. 879 01:14:08,930 --> 01:14:13,210 Le haghaidh léamh, agus ba mhaith liom a stóráil go. 880 01:14:13,210 --> 01:14:18,720 Is é an rud dul chun bheith ina * COMHAD. Anois, cad ba mhaith liom a dhéanamh? 881 01:14:18,720 --> 01:14:21,200 Tabhair dom an dara. 882 01:14:28,140 --> 01:14:30,430 Maith go leor. Anois, cad ba mhaith liom a dhéanamh? 883 01:14:30,430 --> 01:14:32,940 [Mac léinn] Seiceáil má tá sé NULLComment. >> [Bowden] Yeah. 884 01:14:32,940 --> 01:14:38,690 Aon uair a oscailt tú comhad, déan cinnte go bhfuil tú go rathúil in ann a oscailt. 885 01:14:58,930 --> 01:15:10,460 >> 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 886 01:15:10,460 --> 01:15:14,050 agus a shábháil dóibh siúd i rud éigin, ansin ba mhaith liom a athrú mo suímh 887 01:15:14,050 --> 01:15:19,420 le caith amach aon charachtar gur cineál mé, 888 01:15:19,420 --> 01:15:22,520 agus ansin ba mhaith liom a thabhairt suas chun dáta leis na suímh. 889 01:15:22,520 --> 01:15:27,250 Agus ansin ag deireadh an chláir, ba mhaith liom a athrú ar ais go dtí mo suímh bunaidh. 890 01:15:27,250 --> 01:15:32,080 Mar sin, tá an struct ag dul a bheith de chineál termios, agus mé ag dul a iarraidh dhá cheann de na. 891 01:15:32,080 --> 01:15:35,600 Is é an chéad cheann ag dul a bheith ar mo current_settings, 892 01:15:35,600 --> 01:15:42,010 agus ansin tá siad ag dul a bheith ar mo hacker_settings. 893 01:15:42,010 --> 01:15:48,070 Gcéad dul síos, tá mé ag dul go dtí mhaith a shábháil mo suímh reatha, 894 01:15:48,070 --> 01:15:53,790 ansin tá mé ag dul go dtí mhaith a thabhairt cothrom le dáta hacker_settings, 895 01:15:53,790 --> 01:16:01,570 agus ansin ar bhealach ag deireadh mo chlár, ba mhaith liom dul ar ais chuig suímh reatha. 896 01:16:01,570 --> 01:16:08,660 Mar sin, shábháil socruithe reatha, ar an mbealach a oibríonn, termios fear againn. 897 01:16:08,660 --> 01:16:15,810 Feicimid go bhfuil an tcsetattr slánuimhir, slánuimhir tcgetattr. 898 01:16:15,810 --> 01:16:22,960 Pas a fháil mé i struct termios ag a pointeoir. 899 01:16:22,960 --> 01:16:30,640 Is é an bealach seo cuma - I've dearmad cheana féin cad a bhí ar a dtugtar an fheidhm. 900 01:16:30,640 --> 01:16:34,930 Cóipeáil agus greamaigh. 901 01:16:39,150 --> 01:16:45,500 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, 902 01:16:45,500 --> 01:16:49,650 atá ag dul a bheith current_settings, 903 01:16:49,650 --> 01:16:59,120 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. 904 01:16:59,120 --> 01:17:04,360 Cad é an tuarascálaí comhaid atá cosúil le am ar bith a oscailt tú comhad, faigheann sé tuarascálaí comhaid. 905 01:17:04,360 --> 01:17:14,560 Nuair a bheidh mé fopen argv [1], faigheann sé an tuarascálaí comhaid a bhfuil tú ag tagairt 906 01:17:14,560 --> 01:17:16,730 aon uair is mian leat a léamh nó a scríobh dó. 907 01:17:16,730 --> 01:17:19,220 Ní sin an tuarascálaí comhaid mhaith liom a úsáid anseo. 908 01:17:19,220 --> 01:17:21,940 Tá trí tuairisceoirí comhad a bhfuil tú de réir réamhshocraithe, 909 01:17:21,940 --> 01:17:24,310 atá caighdeánach i, amach caighdeánach, agus earráid caighdeánach. 910 01:17:24,310 --> 01:17:29,960 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. 911 01:17:29,960 --> 01:17:33,980 Mar sin, cad a dhéanfaidh mé ag iarraidh a athrú na socruithe? 912 01:17:33,980 --> 01:17:37,370 Ba mhaith liom a athrú ar an socruithe uair a bhuail mé le carachtar, 913 01:17:37,370 --> 01:17:41,590 Ba mhaith liom é le caith an carachtar ar shiúl in ionad í a phriontáil ar an scáileán. 914 01:17:41,590 --> 01:17:45,960 Cén sruth - caighdeán i, amach caighdeánach, nó earráid chaighdeánach - 915 01:17:45,960 --> 01:17:52,050 fhreagraíonn do rudaí nuair a chlóscríobh mé ag an méarchlár? >> [Mac léinn] Caighdeán isteach >> Yeah. 916 01:17:52,050 --> 01:17:56,450 Mar sin, is féidir liom a dhéanamh ceachtar 0 nó is féidir a dhéanamh stdin mé. 917 01:17:56,450 --> 01:17:59,380 Tá mé ag dul an current_settings de chaighdeán isteach 918 01:17:59,380 --> 01:18:01,720 >> Anois, ba mhaith liom a thabhairt cothrom le dáta leis na suímh, 919 01:18:01,720 --> 01:18:07,200 mar sin den chéad uair beidh mé a chóipeáil isteach i hacker_settings cad iad mo current_settings. 920 01:18:07,200 --> 01:18:10,430 Agus conas is structs oibre beidh sé cóip amháin. 921 01:18:10,430 --> 01:18:14,510 Seo cóipeanna gach ceann de na réimsí, mar a bheifeá ag súil. 922 01:18:14,510 --> 01:18:17,410 >> Anois, ba mhaith liom thabhairt cothrom le dáta roinnt de na réimsí sin. 923 01:18:17,410 --> 01:18:21,670 Ag Breathnú ar an termios, ba mhaith leat a léamh trí go leor de seo 924 01:18:21,670 --> 01:18:24,110 ach a fheiceáil cad ba mhaith leat a lorg, 925 01:18:24,110 --> 01:18:28,210 ach go bhfuil na bratacha bhfuil tú ag dul go dtí gur mian a chuardach le haghaidh macalla, 926 01:18:28,210 --> 01:18:33,110 mar sin déan macalla de charachtair ionchur Echo. 927 01:18:33,110 --> 01:18:37,710 An Chéad ba mhaith liom a shocrú - I've cheana dearmad cad iad na réimsí sin. 928 01:18:45,040 --> 01:18:47,900 Tá sé seo conas mar a bhreathnaíonn an struct mhaith. 929 01:18:47,900 --> 01:18:51,060 Mar sin, modhanna ionchur I mo thuairimse, ba mhaith linn a athrú. 930 01:18:51,060 --> 01:18:54,210 Beidh muid ag breathnú ar an réiteach a dhéanamh cinnte go bhfuil cad ba mhaith linn a athrú. 931 01:19:04,060 --> 01:19:12,610 Ba mhaith linn lflag a athrú d'fhonn cosc ​​gá chun breathnú tríd go léir. 932 01:19:12,610 --> 01:19:14,670 Is mian linn a athrú modhanna áitiúla. 933 01:19:14,670 --> 01:19:17,710 Ba mhaith leat a léamh tríd an rud ar fad a thuiscint i gcás ina mbaineann gach rud 934 01:19:17,710 --> 01:19:19,320 gur mian linn a athrú. 935 01:19:19,320 --> 01:19:24,120 Ach tá sé taobh istigh de mhodhanna áitiúla áit táimid ag dul a iarraidh a athrú sin. 936 01:19:27,080 --> 01:19:33,110 Mar sin, tá hacker_settings.cc_lmode cad sé ar a dtugtar. 937 01:19:39,630 --> 01:19:43,020 c_lflag. 938 01:19:49,060 --> 01:19:52,280 Tá sé seo nuair a fháil againn i na hoibreoirí bitwise. 939 01:19:52,280 --> 01:19:54,860 Táimid de chineál ar lasmuigh den am, ach beidh muid ag dul tríd sé mear fíor. 940 01:19:54,860 --> 01:19:56,600 Tá sé seo nuair a fháil againn i na hoibreoirí bitwise, 941 01:19:56,600 --> 01:19:59,950 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, 942 01:19:59,950 --> 01:20:03,370 tú ag dul a bheith ag baint úsáide bitwise oibreoir go leor. 943 01:20:03,370 --> 01:20:08,240 Comhfhreagraíonn gach giotán ar an bhratach a éigin de iompar. 944 01:20:08,240 --> 01:20:14,090 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. 945 01:20:14,090 --> 01:20:18,690 Ach tá cad ba mhaith liom a dhéanamh dul díreach in aice leis an beagán a fhreagraíonn do ECHO. 946 01:20:18,690 --> 01:20:25,440 Mar sin, chun dul go amach a dhéanamh I & = ¬ ECHO. 947 01:20:25,440 --> 01:20:30,110 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. 948 01:20:30,110 --> 01:20:34,050 Is féidir liom termios é. Tá sé ECHO go díreach. 949 01:20:34,050 --> 01:20:38,440 ECHO ag dul a bheith ina giotán amháin. 950 01:20:38,440 --> 01:20:44,230 ¬ Tá ECHO ag dul go gciallaíonn gach giotán leagtha go 1, rud a chiallaíonn gach bratach atá leagtha chun fíor 951 01:20:44,230 --> 01:20:47,140 ach amháin i gcás an giotán ECHO. 952 01:20:47,140 --> 01:20:53,830 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 953 01:20:53,830 --> 01:20:56,520 leagfar síos go fóill fíor. 954 01:20:56,520 --> 01:21:03,240 Chás go bhfuil mo bratach ECHO leagtha chun fíor, ansin tá sé seo leagtha gá go falsa ar an bhratach ECHO. 955 01:21:03,240 --> 01:21:07,170 Mar sin, casadh an líne de chód díreach in aice leis an bhratach ECHO. 956 01:21:07,170 --> 01:21:16,270 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ú. 957 01:21:27,810 --> 01:21:30,180 Sa réiteach, a dúirt sé 0. 958 01:21:30,180 --> 01:21:33,880 Tá sé níos fearr is dócha a rá go sainráite stdin. 959 01:21:33,880 --> 01:21:42,100 >> Fógra go bhfuil mé ag déanamh chomh maith ECHO | icanon anseo. 960 01:21:42,100 --> 01:21:46,650 Icanon Tagraíonn rud éigin ar leith, rud a chiallaíonn modh Canonical. 961 01:21:46,650 --> 01:21:50,280 Cad iad na modhanna modh Canonical de ghnáth nuair a bhíonn tú ag clóscríobh amach na n-orduithe, 962 01:21:50,280 --> 01:21:54,670 Ní caighdeánach i phróiseáil rud ar bith go dtí go bhuail tú líne nua. 963 01:21:54,670 --> 01:21:58,230 Mar sin, nuair a dhéanann tú GetString, scríobhann tú a bunch de rudaí, ansin bhuail tú líne nua. 964 01:21:58,230 --> 01:22:00,590 Sin é nuair a tá sé a sheoladh chuig caighdeán isteach 965 01:22:00,590 --> 01:22:02,680 Sin an réamhshocraithe. 966 01:22:02,680 --> 01:22:05,830 Nuair a bheidh mé a mhúchadh mód Canonical, anois gach carachtar amháin tú ar an cnaipe 967 01:22:05,830 --> 01:22:10,910 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, 968 01:22:10,910 --> 01:22:14,330 agus sin an fáth tá sé go maith a mhaolánú sé i línte ar fad. 969 01:22:14,330 --> 01:22:16,810 Ach ba mhaith liom gach carachtar a phróiseáil 970 01:22:16,810 --> 01:22:18,810 ós rud é nach bhfuil mé ag iarraidh é a fanacht liom a bhuail líne nua 971 01:22:18,810 --> 01:22:21,280 roimh phróiseálfaidh sé na carachtair tá mé ag clóscríobh. 972 01:22:21,280 --> 01:22:24,760 Sé seo casadh as mód Canonical. 973 01:22:24,760 --> 01:22:31,320 An stuif Ciallaíonn ach nuair a phróiseálfaidh sé i ndáiríre carachtair. 974 01:22:31,320 --> 01:22:35,830 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. 975 01:22:35,830 --> 01:22:42,510 Agus is é seo an fheidhm atá cothrom le dáta ar mo suímh le haghaidh caighdeán i, 976 01:22:42,510 --> 01:22:45,480 agus a dhéanann modhanna TCSA sé ceart anois. 977 01:22:45,480 --> 01:22:50,310 Na roghanna eile fanacht go dtí go bhfuil gach rud go bhfuil faoi láthair ar an sruth a phróiseáil. 978 01:22:50,310 --> 01:22:52,030 Nach ábhar i ndáiríre. 979 01:22:52,030 --> 01:22:56,920 Díreach ceart anois athrú mo suímh a bheith cuma cad é atá i hacker_typer_settings. 980 01:22:56,920 --> 01:23:02,210 Buille faoi thuairim mé d'iarr mé é hacker_settings, mar sin a ligean sin a athrú. 981 01:23:09,610 --> 01:23:13,500 Athraigh gach rud a hacker_settings. 982 01:23:13,500 --> 01:23:16,870 >> Anois ag deireadh na ár gclár táimid ag dul a iarraidh ar ais 983 01:23:16,870 --> 01:23:20,210 leis an méid atá faoi láthair taobh istigh de normal_settings, 984 01:23:20,210 --> 01:23:26,560 atá ag dul chun breathnú díreach cosúil & normal_settings. 985 01:23:26,560 --> 01:23:30,650 Fógra nach bhfuil mé athrú ar aon cheann de mo normal_settings ó ar dtús ag fáil é. 986 01:23:30,650 --> 01:23:34,520 Ansin a athrú ach iad ar ais, pas mé iad ar ais ag an deireadh. 987 01:23:34,520 --> 01:23:38,390 Ba é seo an nuashonrú. Maith go leor. 988 01:23:38,390 --> 01:23:43,900 >> Anois taobh istigh de anseo beidh mé a mhíniú ach an cód ar mhaithe le leas an am. 989 01:23:43,900 --> 01:23:46,350 Níl sé sin i bhfad cód. 990 01:23:50,770 --> 01:24:03,750 Feicimid léamh againn carachtar as an comhad. Ar a dtugtar againn sé f. 991 01:24:03,750 --> 01:24:07,850 Anois is féidir leat fear fgetc, ach conas a fgetc ag dul a bheith ag obair 992 01:24:07,850 --> 01:24:11,910 bhfuil ach tá sé ag dul a thabhairt ar ais an carachtar go léann tú díreach nó EO, 993 01:24:11,910 --> 01:24:15,680 a fhreagraíonn go dtí deireadh an chomhaid nó roinnt tarlú earráid. 994 01:24:15,680 --> 01:24:19,900 Táimid ag looping, leanúint ar aghaidh léamh carachtar amháin ón gcomhad, 995 01:24:19,900 --> 01:24:22,420 go dtí go bhfaca muid rith amach de charachtair a léamh. 996 01:24:22,420 --> 01:24:26,650 Agus cé tá ag éirí go, fanacht againn ar charachtar singil ó caighdeánach isteach 997 01:24:26,650 --> 01:24:29,090 Gach uair amháin a scríobhann tú rud éigin ag an líne orduithe, 998 01:24:29,090 --> 01:24:32,820 go s léitheoireacht i carachtar ó caighdeánach isteach 999 01:24:32,820 --> 01:24:38,330 Ansin, tá putchar ag dul díreach a chur ar an ruabhreac léamh againn suas anseo ó na comhaid go amach caighdeánach. 1000 01:24:38,330 --> 01:24:42,890 Is féidir leat fear putchar, ach tá sé ag cur ach a caighdeán amach, tá sé ag priontáil go carachtar. 1001 01:24:42,890 --> 01:24:51,600 D'fhéadfá freisin a dhéanamh ach printf ("% c", c); smaoineamh céanna. 1002 01:24:53,330 --> 01:24:56,670 Sin ag dul a dhéanamh an chuid is mó dár gcuid oibre. 1003 01:24:56,670 --> 01:25:00,300 >> Is é an rud deireanach táimid ag dul a iarraidh a dhéanamh ach fclose ár comhad. 1004 01:25:00,300 --> 01:25:03,310 Mura bhfuil tú fclose, go bhfuil sceitheadh ​​cuimhne. 1005 01:25:03,310 --> 01:25:06,680 Is mian linn a fclose an comhad a d'oscail muid ar dtús, agus sílim go bhfuil sé. 1006 01:25:06,680 --> 01:25:13,810 Má dhéanaimid sin, fuair mé cheana féin fadhbanna. 1007 01:25:13,810 --> 01:25:17,260 A ligean ar a fheiceáil. 1008 01:25:17,260 --> 01:25:19,960 Cad a rinne sé gearán a dhéanamh? 1009 01:25:19,960 --> 01:25:30,220 Bhíothas ag súil le 'o' ach argóint atá de chineál 'struct _IO_FILE *'. 1010 01:25:36,850 --> 01:25:39,370 Beidh muid a fheiceáil má oibríonn go. 1011 01:25:45,210 --> 01:25:53,540 Amháin a cheadaítear i C99. Augh. Maith go leor, a dhéanamh hacker_typer. 1012 01:25:53,540 --> 01:25:57,760 Anois, a fháil againn cur síos níos úsáidí. 1013 01:25:57,760 --> 01:25:59,900 Mar sin, úsáid aitheantóra neamhdhearbhaithe 'normal_settings'. 1014 01:25:59,900 --> 01:26:04,170 Ní raibh mé ag glaoch air normal_settings. D'iarr mé air current_settings. 1015 01:26:04,170 --> 01:26:12,090 Mar sin a ligean athrú go léir de sin. 1016 01:26:17,920 --> 01:26:21,710 Anois, dul argóint. 1017 01:26:26,290 --> 01:26:29,500 Feicfidh mé a dhéanamh an 0 do anois. 1018 01:26:29,500 --> 01:26:36,720 Maith go leor. . / Hacker_typer cp.c. 1019 01:26:36,720 --> 01:26:39,590 Liom freisin nach raibh soiléir ar an scáileán ag an tús. 1020 01:26:39,590 --> 01:26:42,960 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. 1021 01:26:42,960 --> 01:26:45,160 Tá sé priontáil ach roinnt carachtair 1022 01:26:45,160 --> 01:26:47,210 cé go bhfuil sé seo ag déanamh cad ba mhaith liom a dhéanamh. 1023 01:26:47,210 --> 01:26:48,900 Maith go leor. 1024 01:26:48,900 --> 01:26:55,280 Agus smaoineamh ar cén fáth seo gá chun a bheith 0 in ionad ionchur caighdeánach, 1025 01:26:55,280 --> 01:27:00,560 ar cheart a shainiú # 0, 1026 01:27:00,560 --> 01:27:03,890 tá sé seo gearán go - 1027 01:27:13,150 --> 01:27:19,360 Sula nuair a dúirt mé go bhfuil tuairisceoirí comhad ach ansin go mbeadh ort freisin do * COMHAD, 1028 01:27:19,360 --> 01:27:23,210 Is tuarascálaí comhaid ach slánuimhir amháin, 1029 01:27:23,210 --> 01:27:26,970 cé go bhfuil * COMHAD a bunch iomlán de stuif a bhaineann leis. 1030 01:27:26,970 --> 01:27:30,380 An chúis is gá dúinn a rá 0 in ionad ionchur caighdeánach 1031 01:27:30,380 --> 01:27:37,480 Tá go stdin a * COMHAD a dhíríonn ar an rud go bhfuil tagairt 0 tuarascálaí comhaid. 1032 01:27:37,480 --> 01:27:45,070 Mar sin, fiú suas anseo nuair is féidir liom fopen (argv [1], tá mé ag dul a * COMHAD ar ais. 1033 01:27:45,070 --> 01:27:51,180 Ach áit éigin sa * COMHAD rud ​​a fhreagraíonn do na tuarascálaí comhaid don chomhad. 1034 01:27:51,180 --> 01:27:57,430 Má fhéachann tú ar an leathanach fear do oscailte, mar sin Sílim go mbainfidh tú a dhéanamh fear 3 oscailte - nope - 1035 01:27:57,430 --> 01:27:59,380 fear 2 oscailte - yeah. 1036 01:27:59,380 --> 01:28:06,250 Má fhéachann tú ar an leathanach oscailte, tá sé oscailte cosúil le fopen leibhéal níos ísle, 1037 01:28:06,250 --> 01:28:09,350 agus tá a sheoladh ar ais an tuarascálaí comhaid iarbhír. 1038 01:28:09,350 --> 01:28:12,050 fopen a dhéanann a bunch de rudaí ar bharr oscailte, 1039 01:28:12,050 --> 01:28:17,640 a ionad ar ais go díreach ar ais tuarascálaí comhaid a COMHAD iomlán * pointeoir 1040 01:28:17,640 --> 01:28:20,590 taobh istigh de a bhfuil ár tuarascálaí comhaid beag. 1041 01:28:20,590 --> 01:28:25,020 Mar sin, caighdeán i Tagraíonn an rud * COMHAD, 1042 01:28:25,020 --> 01:28:29,120 ach Tagraíonn 0 go díreach leis an gcaighdeán tuarascálaí comhaid ann féin. 1043 01:28:29,120 --> 01:28:32,160 >> Ceisteanna? 1044 01:28:32,160 --> 01:28:35,930 [Gáirí] shéid trí sin. 1045 01:28:35,930 --> 01:28:39,140 Gach ceart. Táimid ag déanamh. [Gáirí] 1046 01:28:39,140 --> 01:28:42,000 >> [CS50.TV]