1 00:00:00,000 --> 00:00:02,500 [Powered by Google Translate] [Seksyon 5 - pi konfòtab] 2 00:00:02,500 --> 00:00:04,690 [Rob Bowden - Inivèsite Harvard] 3 00:00:04,690 --> 00:00:07,250 [Sa a se CS50. - CS50.TV] 4 00:00:08,990 --> 00:00:14,250 >> Tankou mwen te di nan imel mwen, gen yon bann bagay sa yo ou ka itilize 5 00:00:14,250 --> 00:00:17,060 lòt pase aparèy a aktyèlman fè ansanm sa yo, pwoblèm. 6 00:00:17,060 --> 00:00:19,910 Nou rekòmande ou fè li nan aparèy la jis paske Lè sa a, nou ka pi fasil ede ou 7 00:00:19,910 --> 00:00:22,070 e nou konnen ki jan tout bagay ki pral travay. 8 00:00:22,070 --> 00:00:26,950 Men, kòm yon egzanp sou ki kote ou ka fè bagay sa yo si, di, ou pa gen aksè 9 00:00:26,950 --> 00:00:31,570 nan yon aparèy oswa ou ta vle travay nan sousòl la Sant Syans - 10 00:00:31,570 --> 00:00:33,090 ki aktyèlman yo gen aparèy la twò - 11 00:00:33,090 --> 00:00:35,150 si ou vle travay nenpòt kote. 12 00:00:35,150 --> 00:00:42,370 Se yon egzanp Eske ou wè / tande pale de sch? 13 00:00:44,380 --> 00:00:47,780 Sch se fondamantalman jis tankou konekte nan yon bagay. 14 00:00:47,780 --> 00:00:51,340 Aktyèlman, kounye a mwen SSHed nan aparèy la. 15 00:00:51,340 --> 00:00:54,290 Mwen pa janm travay dirèkteman nan aparèy la. 16 00:00:55,930 --> 00:01:01,060 Isit la se aparèy la, epi si ou gade desann isit la ou wè adrès sa a IP. 17 00:01:01,060 --> 00:01:03,650 Mwen pa janm travay nan aparèy la li menm; 18 00:01:03,650 --> 00:01:08,840 Mwen toujou vin sou nan yon fenèt iTerm2 fenèt / tèminal. 19 00:01:08,840 --> 00:01:15,910 Ou kapab sch ak sa yo ki adrès IP, sch jharvard@192.168.129.128. 20 00:01:15,910 --> 00:01:20,390 Mwen sonje ke nimewo trè fasil paske li nan tankou yon modèl bèl. 21 00:01:20,390 --> 00:01:24,920 Men, ki pral mande m 'pou modpas mwen, epi kounye a mwen nan aparèy la. 22 00:01:24,920 --> 00:01:33,060 Fondamantalman, nan pwen sa a, si ou louvri moute yon tèminal andedan nan aparèy nan tèt li, 23 00:01:33,060 --> 00:01:36,350 sa a koòdone, sepandan ou ta sèvi ak li, se egzakteman menm bagay la tou 24 00:01:36,350 --> 00:01:40,010 kòm koòdone nan mwen lè l sèvi avèk plis pase isit la, men kounye a ou ap SSHed. 25 00:01:42,240 --> 00:01:44,920 Ou pa bezwen sch aparèy la. 26 00:01:44,920 --> 00:01:52,360 Yon egzanp nan yon lòt kote ou te kapab sch se mwen trè w ke ou gen pa default - 27 00:01:52,360 --> 00:01:55,020 Oh. Pi gran. 28 00:01:55,020 --> 00:02:01,130 Tout moun nan ou ta dwe gen pa kont FAS default sou serveurs yo FAS. 29 00:02:01,130 --> 00:02:06,840 Pou m ', mwen ta sch rbowden@nice.fas.harvard.edu. 30 00:02:06,840 --> 00:02:11,610 Li nan pral mande w ki premye fwa a, nou di wi. 31 00:02:11,610 --> 00:02:15,840 Modpas mwen se jis pral fè modpas FAS m 'yo. 32 00:02:15,840 --> 00:02:22,650 Se konsa, koulye a, mwen SSHed serveurs yo bèl, e mwen ka fè anyen mwen vle sou isit la. 33 00:02:22,650 --> 00:02:28,560 Yon anpil nan klas ou ta ka pran, tankou 124, yo ale nan gen ou Upload bagay isit la 34 00:02:28,560 --> 00:02:30,950 aktyèlman soumèt kouche pwoblèm ou. 35 00:02:30,950 --> 00:02:34,100 Men, di ou pa gen aksè nan aparèy ou an. 36 00:02:34,100 --> 00:02:37,910 Lè sa a, ou ka fè bagay sa yo, tankou sou isit la li pral di - 37 00:02:37,910 --> 00:02:42,160 Sa a se jis seksyon nou an kesyon. 38 00:02:42,160 --> 00:02:45,070 Li pral mande w fè sa nan aparèy la. 39 00:02:45,070 --> 00:02:47,790 Olye de sa mwen pral jis fè l 'sou sèvè a. 40 00:02:47,790 --> 00:02:50,560 Mwen pral ouvriers sa. 41 00:02:50,560 --> 00:02:55,670 Pwoblèm nan a pwal ke w ap itilize yo lè l sèvi avèk yon bagay tankou jdi 42 00:02:55,670 --> 00:02:58,160 oswa kèlkeswa sa andedan nan aparèy la. 43 00:02:58,160 --> 00:03:01,830 Ou pa pwal gen sa sou sèvè a FAS. 44 00:03:01,830 --> 00:03:04,110 Li nan tout jis pral fè sa a koòdone textuelle. 45 00:03:04,110 --> 00:03:09,180 Se konsa, ou ta ka swa youn, eseye aprann yon editè tèks sa yo genyen. 46 00:03:09,180 --> 00:03:12,130 Yo gen Nano. 47 00:03:12,130 --> 00:03:14,990 Nano se nòmalman trè fasil yo itilize. 48 00:03:14,990 --> 00:03:19,470 Ou kapab sèvi ak flèch ou yo ak tape nòmalman. 49 00:03:19,470 --> 00:03:21,250 Se konsa, sa a pa difisil. 50 00:03:21,250 --> 00:03:24,720 Si ou vle jwenn vrèman anpenpan ou ka itilize anak, 51 00:03:24,720 --> 00:03:29,850 ki mwen pwobableman pa ta dwe louvri paske mwen pa menm konnen ki jan yo fèmen anak. 52 00:03:29,850 --> 00:03:32,760 Kontwòl X, Kontwòl C? Yeah. 53 00:03:32,760 --> 00:03:35,310 Oswa ou ka sèvi ak vim, ki se sa m 'itilize. 54 00:03:35,310 --> 00:03:37,800 Se konsa, sa yo se opsyon ou genyen. 55 00:03:37,800 --> 00:03:43,830 Si ou pa vle fè sa, ou ka tou, si ou gade nan manual.cs50.net-- 56 00:03:43,830 --> 00:03:45,410 Oh. 57 00:03:45,410 --> 00:03:49,920 Sou yon PC, ou ka sch lè l sèvi avèk mastike, 58 00:03:49,920 --> 00:03:51,940 ki w ap ale nan gen download separeman. 59 00:03:51,940 --> 00:03:55,460 Sou yon Mac, ou ka jis pa Terminal itilize default oswa ou ka telechaje iTerm2, 60 00:03:55,460 --> 00:03:58,490 ki se tankou yon bèl, Tèminal anpenpan. 61 00:03:58,490 --> 00:04:03,780 Si ou ale nan manual.cs50.net ou pral wè yon ap mennen nan notepad + +, 62 00:04:03,780 --> 00:04:07,120 ki se ki sa ou ka itilize sou yon PC. 63 00:04:07,120 --> 00:04:13,340 Li pèmèt ou sftp soti nan notepad + +, ki se fondamantalman sch. 64 00:04:13,340 --> 00:04:17,750 Ki sa sa ap kite ou fè se edit dosye ou lokalman, 65 00:04:17,750 --> 00:04:20,670 ak Lè sa a, nenpòt lè ou vle sove yo, li pral sove nice.fas, 66 00:04:20,670 --> 00:04:23,670 ki kote ou ka Lè sa a, kouri yo. 67 00:04:23,670 --> 00:04:26,880 Ak ekivalan a sou yon Mac a pwal TextWrangler. 68 00:04:26,880 --> 00:04:28,760 Se konsa, li pèmèt ou fè menm bagay la. 69 00:04:28,760 --> 00:04:32,800 Li pèmèt ou edite dosye lokalman epi sove yo nan nice.fas, 70 00:04:32,800 --> 00:04:35,730 ki kote ou ka Lè sa a, kouri yo. 71 00:04:35,730 --> 00:04:40,400 Se konsa, si w ap janm kole san yon aparèy, ou gen opsyon sa yo 72 00:04:40,400 --> 00:04:44,230 toujou fè kouche pwoblèm ou. 73 00:04:44,230 --> 00:04:48,250 Pwoblèm nan yon sèl ki pral yo dwe ke ou pa pwal gen bibliyotèk la CS50 74 00:04:48,250 --> 00:04:51,580 paske nice.fas pa pa default gen sa. 75 00:04:51,580 --> 00:04:55,970 Ou kapab swa download bibliyotèk la CS50 - 76 00:04:55,970 --> 00:04:58,470 Mwen pa panse mwen bezwen ki nan pwen sa. 77 00:04:58,470 --> 00:05:03,270 Ou kapab swa download bibliyotèk la CS50 ak kopi li nan men nice.fas, 78 00:05:03,270 --> 00:05:07,450 oswa mwen panse ke nan pwen sa a nou pa itilize li ankò de tout fason. 79 00:05:07,450 --> 00:05:12,720 Oswa si nou fè sa, ou ka pou tan an ke yo te ranplase li ak 80 00:05:12,720 --> 00:05:18,480 en yo nan fonksyon yo nan bibliyotèk la CS50 de tout fason. 81 00:05:18,480 --> 00:05:21,370 Se konsa, ki pa ta dwe ki anpil nan yon restriksyon. 82 00:05:21,370 --> 00:05:23,710 Epi sa a, sa. 83 00:05:26,460 --> 00:05:29,820 >> Mwen pral tounen nan aparèy la kounye a, nou ap fè tout sa nan aparèy la. 84 00:05:29,820 --> 00:05:37,510 Gade nan seksyon nou an kesyon, nan kòmansman an, tankou mwen te di nan imel mwen an, 85 00:05:37,510 --> 00:05:43,620 nou gen pale sou yon sèl nan kout ou te sipoze yo gade. 86 00:05:43,620 --> 00:05:51,980 Nou gen Redirecting la & tiyo ak kesyon sa yo twa. 87 00:05:51,980 --> 00:05:56,070 >> Pou kilès kouran fonksyon tankou printf ekri pa default? 88 00:05:56,070 --> 00:05:59,130 Se konsa, kouran. Ki sa ki se yon kouran? 89 00:06:06,520 --> 00:06:15,100 Yon kouran dlo se fondamantalman tankou li jis kèk - 90 00:06:15,100 --> 00:06:21,450 Li pa menm yon sous 1S ak 0s. 91 00:06:21,450 --> 00:06:24,920 Kouran an li a mande pou isit la se deyò estanda. 92 00:06:24,920 --> 00:06:27,250 Ak soti pou estanda se yon kouran ki lè ou ekri sou li, 93 00:06:27,250 --> 00:06:30,940 li parèt sou ekran an. 94 00:06:30,940 --> 00:06:36,860 Soti Creole, pa kouran, sa vle di ou jis ekri 1S ak 0s sou li, 95 00:06:36,860 --> 00:06:40,220 ak nan fen lòt kote nan soti estanda jis li soti nan ki kouran. 96 00:06:40,220 --> 00:06:43,540 Se jis nan yon afè de 1S ak 0s. 97 00:06:43,540 --> 00:06:45,570 Ou ka ekri nou nan dlo oswa ou ka li nan sous dlo 98 00:06:45,570 --> 00:06:47,950 depann sou sa ki kouran an aktyèlman se. 99 00:06:47,950 --> 00:06:52,800 Lòt de larivyè yo default yo se estanda nan ak erè estanda. 100 00:06:52,800 --> 00:06:57,540 Creole nan se nenpòt lè ou GetString, li te ap tann pou ou pou w bagay D '. 101 00:06:57,540 --> 00:07:01,570 Se konsa, li rete ap tann pou ou, li la aktyèlman ap tann sou estanda nan, 102 00:07:01,570 --> 00:07:04,880 ki se reyèlman ki sa ou jwenn lè ou tape nan klavye la. 103 00:07:04,880 --> 00:07:07,530 W ap tape nan estanda pous 104 00:07:07,530 --> 00:07:10,050 Erè Creole se fondamantalman ekivalan a soti estanda, 105 00:07:10,050 --> 00:07:13,280 men li la espesyalize nan ke lè ou enprime yon erè estanda, 106 00:07:13,280 --> 00:07:16,770 w ap sipoze fè sèlman enprime mesaj erè ak sa yo ki 107 00:07:16,770 --> 00:07:20,200 pou ou kapab distenksyon ant mesaj regilye enprime ekran an 108 00:07:20,200 --> 00:07:24,560 kont mesaj erè depann sou si y 'al nan soti estanda oswa erè estanda. 109 00:07:24,560 --> 00:07:28,660 Dosye tou. 110 00:07:28,660 --> 00:07:32,440 Creole soti, estanda nan, ak erè estanda yo se jis espesyal larivyè, 111 00:07:32,440 --> 00:07:36,810 men reyèlman nenpòt ki dosye, lè ou louvri yon dosye a, li vin yon kouran nan bytes 112 00:07:36,810 --> 00:07:40,740 ki kote ou ka jis li nan ki kouran. 113 00:07:40,740 --> 00:07:47,770 Ou menm, pou pati ki pi, ka jis panse a yon dosye kòm yon kouran nan bytes. 114 00:07:47,770 --> 00:07:51,190 Se konsa, sous dlo sa yo ekri nou nan pa default? Creole deyò. 115 00:07:51,190 --> 00:07:56,980 >> Ki sa ki nan diferans ki genyen ant> ak >>? 116 00:07:58,140 --> 00:08:03,710 Èske nenpòt moun ki gade videyo a davans? Oke. 117 00:08:03,710 --> 00:08:10,960 > A pwal ki jan ou redireksyon nan dosye, 118 00:08:10,960 --> 00:08:15,240 ak >> tou se pral redireksyon pwodiksyon nan dosye, 119 00:08:15,240 --> 00:08:17,820 Men, li la olye ale nan kole nan dosye a. 120 00:08:17,820 --> 00:08:23,430 Pou egzanp, kite a di mwen rive gen dikt dwa isit la, 121 00:08:23,430 --> 00:08:27,020 ak lòt bagay la sèlman andedan nan dikt se chat, chat, chen, pwason, chen. 122 00:08:27,020 --> 00:08:31,530 Youn nan lòd ki di ou gen nan liy lan bay lòd se chat, 123 00:08:31,530 --> 00:08:34,539 ki se jis pral enprime sa ki nan nan yon dosye. 124 00:08:34,539 --> 00:08:40,679 Se konsa, lè m 'di dikt chat, li pral enprime, chat chat, chen, pwason, chen. Sa a tout chat fè. 125 00:08:40,679 --> 00:08:46,280 Sa vle di ke li enprime estanda soti, chat chat, chen, chen pwason,. 126 00:08:46,280 --> 00:08:53,240 Si m 'olye vle redireksyon ki nan yon dosye, mwen ka itilize> ak redireksyon li nan tou sa dosye a se. 127 00:08:53,240 --> 00:08:56,460 Mwen pral rele dosye a dosye. 128 00:08:56,460 --> 00:09:00,320 Se konsa, kounye a si mwen ls, mwen pral wè mwen gen yon dosye nouvo rele dosye-a. 129 00:09:00,320 --> 00:09:05,700 Men, si mwen louvri l 'moute, li te pral fè ekzakteman ki sa chat mete nan liy lan lòd. 130 00:09:05,700 --> 00:09:11,040 Se konsa, kounye a, si mwen fè sa ankò, lè sa a li pral redireksyon pwodiksyon an nan dosye li an, 131 00:09:11,040 --> 00:09:13,930 ak mwen pral gen menm bagay la egzak. 132 00:09:13,930 --> 00:09:17,910 Se konsa, teknikman, li konplètman anporte ki sa nou te fè. 133 00:09:17,910 --> 00:09:22,970 Epitou, n ap wè si mwen chanje dikt, mwen te pran soti chen. 134 00:09:22,970 --> 00:09:29,980 Koulye a, si nou chat dikt nan dosye ankò, nou pwal gen vèsyon nan nouvo ak chen retire li. 135 00:09:29,980 --> 00:09:32,400 Se konsa, li konplètman Vanport li. 136 00:09:32,400 --> 00:09:36,640 Olye de sa, si nou sèvi ak >>, li te ale nan tache dosye-a. 137 00:09:36,640 --> 00:09:40,860 Koulye a, louvri dosye, nou wè nou gen jis menm bagay la de fwa enprime 138 00:09:40,860 --> 00:09:44,920 paske li te gen yon fwa, Lè sa a, nou apandis nan orijinal la. 139 00:09:44,920 --> 00:09:48,130 Sa ki Se konsa, ke a> ak >> fè. 140 00:09:48,130 --> 00:09:50,580 youn nan pwochen mande - Li pa mande sou li. 141 00:09:50,580 --> 00:09:59,050 >> Yon sèl nan lòt ke nou gen se <, ki si> redireksyon soti estanda, 142 00:09:59,050 --> 00:10:01,970 00:10:12,050 Ann gade pou wè si nou ta gen yon egzanp. 144 00:10:14,750 --> 00:10:16,930 Mwen ka ekri yon reyèl rapid. 145 00:10:17,870 --> 00:10:25,700 Kite a pran nenpòt ranpli, hello.c. 146 00:10:56,060 --> 00:10:59,070 Relativman senp dosye-a. 147 00:10:59,070 --> 00:11:03,570 Mwen jis ap resevwa yon kòd li ansanm ak Lè sa a, enprime "Alo" kèlkeswa sa fisèl la mwen jis te antre nan te ye. 148 00:11:03,570 --> 00:11:07,990 Se konsa, fè alo ak Lè sa a,. / Hello. 149 00:11:07,990 --> 00:11:10,720 Kounye a li nan pouse m 'antre nan yon bagay, 150 00:11:10,720 --> 00:11:15,070 ki vle di li an ap tann sou bagay yo dwe antre nan estanda pous 151 00:11:15,070 --> 00:11:20,450 Se konsa, antre nan tou sa mwen vle nan estanda pous Nou jis ap pral di Hello, Rob! 152 00:11:20,450 --> 00:11:23,310 Lè sa a, li la enprime estanda soti Hello, Rob! 153 00:11:23,310 --> 00:11:28,860 Si m 'fè. / Alo ak Lè sa a, redireksyon, 154 00:11:30,740 --> 00:11:34,310 pou kounye a ou ka sèlman redireksyon ki sòti nan yon dosye. 155 00:11:34,310 --> 00:11:41,720 Se konsa, si mwen mete nan kèk dosye li an, txt, epi mwen mete Rob, 156 00:11:41,720 --> 00:11:52,300 si mwen kouri alo ak Lè sa a, redireksyon txt a dosye a. / hello, li la pral di Hello, Rob! imedyatman. 157 00:11:52,300 --> 00:11:57,160 Lè li premye vin GetString ak li a ap tann sou estanda nan, 158 00:11:57,160 --> 00:12:01,730 estanda nan se pa ap tann sou klavye a pou done jwenn te antre nan. 159 00:12:01,730 --> 00:12:05,980 Olye de sa, nou te reyorante resous-estanda nan yo li nan dosye txt la. 160 00:12:05,980 --> 00:12:10,290 Se konsa, li la pral li soti nan txt a dosye, ki se jis liy Rob a, 161 00:12:10,290 --> 00:12:13,380 ak Lè sa a, li pral enprime Hello, Rob! 162 00:12:13,380 --> 00:12:18,180 Men, si mwen te vle, mwen te kapab fè tou. / Alo 00:12:21,500 ak Lè sa a, estanda a deyò ki enprime li a, ki se Hello, Rob!, 164 00:12:21,500 --> 00:12:24,700 Mwen ka redireksyon ki nan dosye pwòp li yo. 165 00:12:24,700 --> 00:12:29,790 Mwen pral jis rele dosye a alo - pa gen okenn, mwen pa vle, paske sa a, se ègzèkutabl a - txt2. 166 00:12:29,790 --> 00:12:40,150 Koulye a, txt2 ki pral gen randman de. / Alo txt <, ki a pwal Hello, Rob! 167 00:12:41,370 --> 00:12:43,520 >> Kesyon? 168 00:12:45,900 --> 00:12:49,090 >> Oke. Se konsa, Lè sa a, isit la nou gen tiyo. 169 00:12:49,090 --> 00:12:53,510 Tiyo yo se inite ki sot pase a nan Jefò. 170 00:12:53,510 --> 00:12:58,750 >> Oh. Mwen devine yon inite plis nan Jefò se si olye pou yo> ou fè 2>, 171 00:12:58,750 --> 00:13:01,070 ki nan Redireksyon estanda erè. 172 00:13:01,070 --> 00:13:06,280 Se konsa, si yon bagay te ale nan erè estanda, li pa ta jwenn mete nan txt2. 173 00:13:06,280 --> 00:13:12,480 Men, remake, si mwen fè 2>, Lè sa a, li la toujou enprime Hello, Rob! nan liy lan bay lòd 174 00:13:12,480 --> 00:13:18,600 paske mwen m 'sèlman Redireksyon estanda erè, mwen pa Redireksyon estanda deyò. 175 00:13:18,600 --> 00:13:22,210 Creole erè ak soti estanda yo diferan. 176 00:13:24,210 --> 00:13:27,080 Si ou te vle aktyèlman ekri nou nan erè estanda, 177 00:13:27,080 --> 00:13:35,080 Lè sa a, mwen te kapab chanje sa a yo dwe fprintf stder. 178 00:13:35,080 --> 00:13:37,850 Se konsa, printf, pa default, simagri soti estanda. 179 00:13:37,850 --> 00:13:41,720 Si m 'vle enprime yon erè estanda manyèlman, lè sa a mwen gen yo sèvi ak fprintf 180 00:13:41,720 --> 00:13:45,010 ak yo espesifye ki sa m 'vle enprime a. 181 00:13:45,010 --> 00:13:49,720 Si olye m 'te fè fprintf stdou, lè sa a sa a, se fondamantalman ekivalan a printf. 182 00:13:49,720 --> 00:13:55,530 Men, fprintf estanda erè. 183 00:13:57,790 --> 00:14:03,650 Se konsa, koulye a, si mwen redireksyon sa a nan txt2, Hello, Rob! se toujou ap resevwa enprime nan liy lan bay lòd 184 00:14:03,650 --> 00:14:08,270 depi li nan ap resevwa enprime yon erè estanda ak mwen sèlman Redireksyon estanda deyò. 185 00:14:08,270 --> 00:14:16,420 Si m 'koulye a redireksyon estanda erè, kounye a li pa t' jwenn enprime, ak txt2 a pwal Hello, Rob! 186 00:14:16,420 --> 00:14:21,910 Se konsa, kounye a, ou ka enprime erè aktyèl ou nan erè estanda 187 00:14:21,910 --> 00:14:24,720 epi enprime mesaj regilye ou a soti estanda. 188 00:14:24,720 --> 00:14:31,420 Se konsa, lè ou kouri pwogram ou an, ou ka kouri li kòm. / Alo sa a ki kalite ak 2 a> 189 00:14:31,420 --> 00:14:33,800 pou ke pwogram ou a pral nan kouri nòmalman, 190 00:14:33,800 --> 00:14:38,400 men nenpòt ki mesaj erè ke ou jwenn ou ka tcheke pita nan boutèy demi lit erè ou a, 191 00:14:38,400 --> 00:14:44,500 Se konsa erè, ak Lè sa a, gade pita ak dosye erè ou ap gen nenpòt ki erè sa ki te rive. 192 00:14:45,200 --> 00:14:47,540 >> Kesyon? 193 00:14:47,540 --> 00:14:58,070 >> Youn nan dènye se pip, ki ou ka panse a kòm pran estanda a soti nan yon sèl lòd 194 00:14:58,070 --> 00:15:01,210 ak fè li estanda a nan nan kòmand kap vini an. 195 00:15:01,210 --> 00:15:05,570 Yon egzanp isit la se eko se yon bagay liy lòd 196 00:15:05,570 --> 00:15:11,840 ki se jis pral repete tou sa mwen mete kòm agiman li yo. Mwen pa pral mete quotes. 197 00:15:11,840 --> 00:15:16,150 Eko bla, bla, bla se jis ale nan enprime bla, bla, bla. 198 00:15:16,150 --> 00:15:20,600 Anvan, lè m 'te di mwen te gen yo mete Rob nan yon dosye txt 199 00:15:20,600 --> 00:15:28,830 paske mwen ka sèlman redireksyon txt dosye, olye de sa, / si mwen repete Rob 200 00:15:28,830 --> 00:15:35,520 ak Lè sa a, tiyo l 'nan. / hello, ki pral fè tou menm kalite bagay sa yo. 201 00:15:35,520 --> 00:15:39,160 Sa a ap pran randman de lòd sa a, eko Rob, 202 00:15:39,160 --> 00:15:43,610 epi itilize li tankou D 'a pou. / hello. 203 00:15:44,790 --> 00:15:49,560 Ou ka panse a li kòm premye redireksyon eko Rob nan yon dosye 204 00:15:49,560 --> 00:15:54,160 ak Lè sa a, D 'a. / alo ke dosye ki te jis outputted. 205 00:15:54,160 --> 00:15:57,850 Men, li pran dosye a tanporè soti nan imaj la. 206 00:16:01,890 --> 00:16:04,460 >> Kesyon sou sa? 207 00:16:04,460 --> 00:16:07,150 >> Nan pwochen kesyon an ki pral gen pou wè ak sa a. 208 00:16:07,150 --> 00:16:15,310 Ki sa ki ta ka tiyo ou itilize a jwenn kantite a nan non inik nan yon dosye rele names.txt? 209 00:16:15,310 --> 00:16:24,160 Kòmandman sa yo nou ap ale nan vle sèvi ak isit la yo se inik, kidonk unik, ak Lè sa a, wc. 210 00:16:24,160 --> 00:16:28,840 Ou ka fè unik nonm kite ak aktyèlman gade a sa ki sa li fè, 211 00:16:28,840 --> 00:16:34,840 ak li jis ale nan filtre adjasan matche liy nan D 'a. 212 00:16:34,840 --> 00:16:40,690 Apre sa, nonm wc ki pral enprime newline, pawòl la, yo konte multiple pou chak dosye. 213 00:16:40,690 --> 00:16:43,760 Ak youn nan dènye nou pral vle itilize se sòt, 214 00:16:43,760 --> 00:16:47,410 ki se pral jis sòt liy nan dosye txt. 215 00:16:47,410 --> 00:16:58,080 Si m 'fè kèk dosye txt, names.txt, epi li Rob, Tommy, Jozèf, Tommy, Jozèf, RJ, Rob, 216 00:16:58,080 --> 00:17:03,910 sa m 'vle fè isit la se jwenn sou ki kantite non inik nan sa a dosye. 217 00:17:03,910 --> 00:17:08,750 Se konsa, sa yo ta dwe repons lan ta dwe ye? >> [Elèv] 4. >> Yeah. 218 00:17:08,750 --> 00:17:13,780 Li ta dwe 4 depi Rob, Tommy, Jozèf, RJ yo, se non yo sèlman inik nan sa a dosye. 219 00:17:13,780 --> 00:17:20,180 Premye etap la, si mwen jis fè konte mo sou names.txt, 220 00:17:20,180 --> 00:17:24,290 Sa a se aktyèlman di m 'tout bagay. 221 00:17:24,290 --> 00:17:32,560 Sa a se aktyèlman enprime - Ann gade pou wè, nonm wc - newlines, mo, epi konte multiple. 222 00:17:32,560 --> 00:17:38,270 Si m 'sèlman swen sou liy, Lè sa a, mwen ka jis fè wc-l names.txt. 223 00:17:41,730 --> 00:17:44,300 Se konsa, sa a, se etap 1. 224 00:17:44,300 --> 00:17:50,510 Men, mwen pa vle wc-l names.txt paske names.txt jis gen tout non yo, 225 00:17:50,510 --> 00:17:54,170 e mwen vle met deyò ansyen lwil nenpòt moun ki pa inik. 226 00:17:54,170 --> 00:18:01,200 Se konsa, si m 'fè unik names.txt, ki pa byen, ban m' sa m 'vle 227 00:18:01,200 --> 00:18:03,760 paske non yo double toujou la. 228 00:18:03,760 --> 00:18:07,690 Poukisa se sa? Poukisa se unik pa fè sa m 'vle? 229 00:18:07,690 --> 00:18:10,500 [Elèv] Doublon la yo se pa [fèbl] >> Yeah. 230 00:18:10,500 --> 00:18:16,370 Sonje paj la nonm pou unik di filtre liy matche adjasan. 231 00:18:16,370 --> 00:18:19,680 Yo ap pa adjasan, se konsa li pa pral filtre yo. 232 00:18:19,680 --> 00:18:31,100 Si m 'sòt yo an premye, names.txt sòt ki pral mete tout liy yo kopi yo ansanm. 233 00:18:31,100 --> 00:18:34,450 Se konsa, kounye a names.txt sòt se ke. 234 00:18:34,450 --> 00:18:40,550 Mwen pral vle itilize sa kòm opinyon nan unik, ki se | unik. 235 00:18:40,550 --> 00:18:43,390 Sa ki ban m 'Jozèf, RJ, Rob, Tommy, 236 00:18:43,390 --> 00:18:49,260 e mwen vle yo sèvi ak sa kòm opinyon nan wc L-, 237 00:18:49,260 --> 00:18:52,740 ki se ale nan, ban m '4. 238 00:18:52,740 --> 00:18:56,930 Tankou li di isit la, sa ki te kapab tiyo ou itilize? 239 00:18:56,930 --> 00:19:01,390 Ou kapab fè yon anpil nan bagay sa yo tankou lè l sèvi avèk yon seri de kòmandman 240 00:19:01,390 --> 00:19:05,130 ki kote ou sèvi ak pwodiksyon an soti nan yon lòd kòm opinyon nan lòd kap vini an. 241 00:19:05,130 --> 00:19:08,780 Ou kapab fè yon anpil nan bagay sa yo, yon bann bagay sa yo entelijan. 242 00:19:08,780 --> 00:19:11,440 >> Kesyon? 243 00:19:12,910 --> 00:19:14,600 Oke. 244 00:19:14,600 --> 00:19:17,880 Sa a se li pou tiyo ak Jefò. 245 00:19:18,370 --> 00:19:24,090 >> Koulye a, nou ale nan bagay la reyèl, bagay la kodaj. 246 00:19:24,090 --> 00:19:29,100 Anndan sa a PDF yo, w ap wè lòd sa a, 247 00:19:29,100 --> 00:19:32,950 epi ou pral vle kouri lòd sa a nan aparèy ou an. 248 00:19:36,240 --> 00:19:42,250 wje se yo lòd, ki pou jis ap resevwa yon bagay nan men entènèt la,, fondamantalman, 249 00:19:42,250 --> 00:19:45,180 Se konsa wje ak URL sa a. 250 00:19:45,180 --> 00:19:49,110 Si ou te ale nan URL sa nan navigatè ou a, li ta download ki dosye. 251 00:19:49,110 --> 00:19:52,510 Mwen te jis klike sou li, se konsa li telechaje dosye a pou mwen. 252 00:19:52,510 --> 00:19:55,650 Men, ekri wje nan ke bagay andedan nan tèminal nan 253 00:19:55,650 --> 00:19:58,620 se jis ale nan download li nan tèminal ou a. 254 00:19:58,620 --> 00:20:02,750 Mwen gen section5.zip, ak ou pral vle ouvriers section5.zip, 255 00:20:02,750 --> 00:20:06,520 ki se pral ba ou yon folder rele section5, 256 00:20:06,520 --> 00:20:11,550 ki se ale nan gen tout dosye sa yo nou ap pral lè l sèvi avèk jodi a andedan nan li. 257 00:20:33,380 --> 00:20:37,710 Kòm non dosye pwogram sa yo 'sijere yo, yo se yon buggy ti jan, 258 00:20:37,710 --> 00:20:40,990 Se konsa misyon ou a se fè konpwan poukisa lè l sèvi avèk gdb. 259 00:20:40,990 --> 00:20:44,560 tout moun fè yo telechaje / konnen ki jan yo jwenn yo telechaje 260 00:20:44,560 --> 00:20:47,480 nan aparèy yo? Oke. 261 00:20:47,480 --> 00:20:56,400 >> Kouri ./buggy1, li pral di fòt Segmentation (nwayo jete), 262 00:20:56,400 --> 00:21:00,500 ki nenpòt ki lè ou jwenn yon segfault, li nan yon move bagay. 263 00:21:00,500 --> 00:21:03,810 Nan ki sikonstans ou jwenn yon segfault? 264 00:21:03,810 --> 00:21:08,210 [Elèv] Dereferencing yon konsèy nil. >> Yeah. Se konsa, ki se yon egzanp. 265 00:21:08,210 --> 00:21:11,580 Dereferencing yon konsèy nil w ap ale nan jwenn yon segfault. 266 00:21:11,580 --> 00:21:16,720 Ki sa ki yon segfault vle di se w ap manyen memwa ou pa ta dwe manyen. 267 00:21:16,720 --> 00:21:21,350 Se konsa, dereferencing yon konsèy nil an touche adrès 0, 268 00:21:21,350 --> 00:21:28,060 ak, fondamantalman, tout òdinatè sèjousi di ke 0 adrès se memwa ou pa ta dwe manyen. 269 00:21:28,060 --> 00:21:31,920 Se konsa, Se poutèt sa dereferencing yon rezilta konsèy nil nan yon segfault. 270 00:21:31,920 --> 00:21:37,210 Lè ou rive pa inisyalize yon konsèy, lè sa a li gen yon valè fatra, 271 00:21:37,210 --> 00:21:41,520 epi konsa lè w ap eseye dèreferans li, nan tout chans w ap manyen memwa 272 00:21:41,520 --> 00:21:43,540 sa a, se nan mitan an nan okenn kote. 273 00:21:43,540 --> 00:21:45,650 Si ou rive jwenn chans ak valè nan fatra 274 00:21:45,650 --> 00:21:48,440 rive lonje dwèt sou yon kote sou pil la oswa yon bagay, 275 00:21:48,440 --> 00:21:50,820 Lè sa a, lè ou dèreferans ki konsèy ki ou pa t 'inisyalizèd, 276 00:21:50,820 --> 00:21:52,730 anyen pa pwal ale mal. 277 00:21:52,730 --> 00:21:55,480 Men, si li nan lonje dwèt a, di, yon kote ant chemine a ak pil wòch la, 278 00:21:55,480 --> 00:21:59,850 oswa li nan lonje dwèt jis yon kote ki pa te itilize pa pwogram ou an ankò, 279 00:21:59,850 --> 00:22:02,240 Lè sa a, w ap manyen memwa ou pa ta dwe manyen yo epi yo ou segfault. 280 00:22:02,240 --> 00:22:06,370 Lè w ekri yon fonksyon repetitif e li recurses fwa twò anpil 281 00:22:06,370 --> 00:22:08,720 ak chemine ou a ap grandi twò gwo ak eurt yo chemine nan bagay sa yo 282 00:22:08,720 --> 00:22:12,270 ke li pa ta dwe fè kolizyon ak, w ap manyen memwa ou pa ta dwe manyen, 283 00:22:12,270 --> 00:22:14,810 konsa ou segfault. 284 00:22:14,810 --> 00:22:17,010 Se pou sa ke yon segfault se. 285 00:22:17,010 --> 00:22:21,810 >> Li la tou rezon nan menm ke si ou gen yon fisèl tankou - 286 00:22:21,810 --> 00:22:23,930 kite yo ale tounen nan pwogram anvan yo. 287 00:22:23,930 --> 00:22:28,530 Nan hello.c-I'm jis pwal fè yon lòt bagay. 288 00:22:28,530 --> 00:22:33,770 Char * s = "alo mond!"; 289 00:22:33,770 --> 00:22:42,310 Si mwen itilize * s = yon bagay oswa s [0] = 'X'; 290 00:22:42,310 --> 00:22:47,290 kidonk, fè hello,. / hello, poukisa ke segfault? 291 00:22:48,410 --> 00:22:51,250 Poukisa sa a segfault? 292 00:22:55,660 --> 00:22:57,890 Ki sa ou ta atann yo rive? 293 00:22:57,890 --> 00:23:06,640 Si m 'te fè printf ("% s \ n", yo); sa ki ou ta atann yo dwe enprime? 294 00:23:06,640 --> 00:23:09,930 [Elèv] X hello. >> Yeah. 295 00:23:09,930 --> 00:23:15,140 Pwoblèm lan se ke lè ou deklare yon fisèl tankou sa a, 296 00:23:15,140 --> 00:23:18,190 s se yon konsèy ki nan pwal ale sou chemine a, 297 00:23:18,190 --> 00:23:25,880 ak sa a se montre se sa a fisèl ki se genyen nan yo nan Read-Only memwa. 298 00:23:25,880 --> 00:23:30,560 Se konsa, jis pa non yo, memwa a Read-Only, ou ta dwe jwenn lide la 299 00:23:30,560 --> 00:23:33,010 ke si ou eseye chanje sa ki nan Read-Only memwa, 300 00:23:33,010 --> 00:23:36,670 w ap fè yon bagay ou pa ta dwe ap fè ak memwa ak ou segfault. 301 00:23:36,670 --> 00:23:45,360 Sa a se aktyèlman yon gwo diferans ant Char nan * ak Char nan []. 302 00:23:45,360 --> 00:23:48,790 Se konsa, Char nan [], kounye a sa a fisèl yo pral mete yo sou chemine a, 303 00:23:48,790 --> 00:23:53,960 ak chemine a se pa li-sèlman, ki vle di ke sa a yo ta dwe travay parfètman anfòm. 304 00:23:55,500 --> 00:23:57,370 Ak li fè sa. 305 00:23:57,370 --> 00:24:06,250 Sonje byen lè m 'fè Char * s = "alo mond!", S tèt li se sou chemine a 306 00:24:06,250 --> 00:24:10,390 men pwen an yon lòt kote, e ke yon lòt kote k ap pase yo li-sèlman. 307 00:24:10,390 --> 00:24:15,640 Men, Char nan [] se jis yon bagay sou pil la. 308 00:24:17,560 --> 00:24:21,760 Se konsa, sa a, se yon lòt egzanp nan yon segfault pase. 309 00:24:21,760 --> 00:24:27,820 >> Nou te wè ki ./buggy1 a nan yon segfault. 310 00:24:27,820 --> 00:24:31,810 Nan teyori, ou pa ta dwe gade nan buggy1.c imedyatman. 311 00:24:31,810 --> 00:24:35,170 Olye de sa, nou pral gade nan li nan gdb. 312 00:24:35,170 --> 00:24:37,750 Remake lè ou jwenn fòt Segmentation (nwayo jete), 313 00:24:37,750 --> 00:24:40,850 ou jwenn sa a ranpli plis pase isit la yo rele prensipal yo. 314 00:24:40,850 --> 00:24:45,200 Si nou ls-l, n ap wè ke debaz se nòmalman yon dosye trè gwo. 315 00:24:45,200 --> 00:24:51,580 Sa a se nimewo a nan bytes nan dosye a, se konsa li sanble li nan 250-yon bagay kilookte. 316 00:24:51,580 --> 00:24:56,120 Rezon ki fè la pou sa a se ke sa ki pil fatra debaz la aktyèlman se 317 00:24:56,120 --> 00:25:01,410 se lè aksidan pwogram ou an, eta a nan memwa nan pwogram ou an 318 00:25:01,410 --> 00:25:05,230 jis vin kopye ak kole nan sa a dosye. 319 00:25:05,230 --> 00:25:07,270 Li vin jete nan ki dosye. 320 00:25:07,270 --> 00:25:13,060 Pwogram sa a, pandan ke li te kouri, rive gen yon itilizasyon memwa nan alantou 250 kilookte, 321 00:25:13,060 --> 00:25:17,040 e konsa se sa ki te resevwa jete nan sa a dosye. 322 00:25:17,040 --> 00:25:23,630 Koulye a, ou ka gade nan ki dosye si nou fè gdb buggy1 prensipal yo. 323 00:25:23,630 --> 00:25:30,130 Nou ka jis fè gdb buggy1, ak ki pral jis kòmanse moute gdb regilyèman, 324 00:25:30,130 --> 00:25:33,800 lè l sèvi avèk buggy1 kòm dosye D 'li yo. 325 00:25:33,800 --> 00:25:38,260 Men, si ou fè gdb buggy1 debaz yo, Lè sa a, li la espesyalman pral kòmanse moute gdb 326 00:25:38,260 --> 00:25:40,330 pa gade nan ki dosye prensipal yo. 327 00:25:40,330 --> 00:25:45,560 Epi ou di buggy1 gdb vle di konnen ke ke dosye debaz soti nan pwogram nan buggy1. 328 00:25:45,560 --> 00:25:49,580 Se konsa, gdb buggy1 debaz ki pral imedyatman mennen nou 329 00:25:49,580 --> 00:25:52,060 nan kote pwogram lan rive mete fen nan. 330 00:25:57,720 --> 00:26:02,340 Nou wè isit la Pwogram sispann ak, 11 siyal fòt Segmentation. 331 00:26:02,340 --> 00:26:10,110 Nou rive wè yon liy nan asanble a, ki pwobableman se pa trè itil. 332 00:26:10,110 --> 00:26:15,360 Men, si ou tape b oswa baktras, ki k ap pase yo dwe fonksyon an 333 00:26:15,360 --> 00:26:19,430 ki ba nou lis la nan ankadreman aktyèl pil nou an. 334 00:26:19,430 --> 00:26:23,150 Se konsa, baktras. Li sanble ke nou sèlman gen de ankadreman chemine. 335 00:26:23,150 --> 00:26:26,310 Premye a se ankadreman chemine prensipal nou an, 336 00:26:26,310 --> 00:26:29,810 ak dezyèm la se ankadreman an pil pou sa a fonksyon ki nou rive yo an, 337 00:26:29,810 --> 00:26:34,440 ki sanble nou sèlman gen kòd la tout pèp pou li a. 338 00:26:34,440 --> 00:26:38,050 Se konsa, kite yo ale tounen nan fonksyon prensipal nou an, 339 00:26:38,050 --> 00:26:42,300 ak fè sa nou kapab fè ankadreman 1, ak mwen panse ke nou ka fè tou desann, 340 00:26:42,300 --> 00:26:45,160 Men, mwen prèske pa janm fè desann - oswa leve. Yeah. 341 00:26:45,160 --> 00:26:50,710 Leve, li desann. Up pote ou moute yon sèl ankadreman chemine, desann pote ou desann yon ankadreman chemine. 342 00:26:50,710 --> 00:26:53,240 Mwen gen tandans pa janm sèvi ak sa. 343 00:26:53,240 --> 00:26:59,120 Mwen te jis espesyalman di, 1 ankadreman ki se ale nan ankadreman an ki make 1. 344 00:26:59,120 --> 00:27:01,750 Ankadreman 1 ki pral fè nou antre ankadreman chemine prensipal yo, 345 00:27:01,750 --> 00:27:05,570 ak li di dwa isit la liy lan nan kòd nou rive yo a. 346 00:27:05,570 --> 00:27:07,950 Si nou te vle yon koup plis liy nan kòd, nou ka di lis, 347 00:27:07,950 --> 00:27:11,280 Epi sa a, pral bay nou tout liy ki nan kòd wonn li. 348 00:27:11,280 --> 00:27:13,360 Liy lan nou segfaulted nan te 6: 349 00:27:13,360 --> 00:27:17,360 si (strkan ("CS50 wòch", argv [1]) == 0). 350 00:27:17,360 --> 00:27:24,130 Si li pa evidan ankò, ou ka jwenn li dwat soti nan isit la jis pa panse poukisa li segfaulted. 351 00:27:24,130 --> 00:27:28,800 Men, nou ka pran li yon sèl etap plis ak di, "Poukisa ta argv [1] segfault?" 352 00:27:28,800 --> 00:27:38,830 Ekri ak lèt ​​detache Ann argv [1], epi li sanble 0x0 li a, ki se konsèy nan nil. 353 00:27:38,830 --> 00:27:44,750 Nou ap strcmping CS50 wòch ak nil, ak pou ke a pral segfault. 354 00:27:44,750 --> 00:27:48,280 Epi poukisa se argv [1] nil? 355 00:27:48,640 --> 00:27:51,280 [Elèv] Paske nou pa t 'ba li nenpòt agiman bay lòd-liy. 356 00:27:51,280 --> 00:27:53,390 Yeah. Nou pa t 'ba li nenpòt agiman bay lòd-liy. 357 00:27:53,390 --> 00:27:58,460 Se konsa, ./buggy1 se sèlman pral gen argv [0] dwe ./buggy1. 358 00:27:58,460 --> 00:28:02,100 Li pa nan ale nan gen yon argv [1], se konsa ke a pral segfault. 359 00:28:02,100 --> 00:28:07,450 Men, si, olye de sa, mwen fè jis CS50, li pral di Ou jwenn yon D 360 00:28:07,450 --> 00:28:09,950 paske se sa ki li nan sipoze fè. 361 00:28:09,950 --> 00:28:15,240 Gade nan buggy1.c, li te sipoze fè enprime "Ou ka resevwa yon D" - 362 00:28:15,240 --> 00:28:20,820 Si argv [1] se pa sa "CS50 wòch", "Ou jwenn yon D", lòt bagay "Ou jwenn yon A!" 363 00:28:20,820 --> 00:28:25,660 Se konsa, si nou vle yon A, nou bezwen sa a yo konpare kòm vre, 364 00:28:25,660 --> 00:28:28,710 ki vle di ke li konpare ak 0. 365 00:28:28,710 --> 00:28:31,100 Se konsa, argv [1] bezwen yo dwe "CS50 wòch". 366 00:28:31,100 --> 00:28:35,660 Si ou vle fè sa sou liy lan bay lòd la, ou bezwen sèvi ak \ yo sove espas la. 367 00:28:35,660 --> 00:28:41,690 Se konsa, CS50 \ wòch ak Ou jwenn yon A! 368 00:28:41,690 --> 00:28:44,060 Si w pa fè antislach a, poukisa sa a pa travay? 369 00:28:44,060 --> 00:28:47,190 [Elèv] Li nan de prèv diferan. >> Yeah. 370 00:28:47,190 --> 00:28:52,540 Argv [1] a pwal CS50, ak argv [2] a pwal wòch. Oke. 371 00:28:52,540 --> 00:28:56,470 >> Koulye a, ./buggy2 ki pral segfault ankò. 372 00:28:56,470 --> 00:29:01,880 Olye pou yo k ap louvri l 'ak dosye nwayo li, nou pral jis louvri moute buggy2 dirèkteman, 373 00:29:01,880 --> 00:29:05,000 Se konsa gdb buggy2. 374 00:29:05,000 --> 00:29:09,590 Koulye a, si nou jis kouri pwogram nou an, lè sa a li nan pral di Pwogram resevwa siyal SIGSEGV, 375 00:29:09,590 --> 00:29:15,530 ki se segfault a siyal, e sa se kote li te rive li rive vre. 376 00:29:15,530 --> 00:29:21,250 Gade nan baktras nou an, nou wè ke nou te nan oh_no fonksyon an, 377 00:29:21,250 --> 00:29:23,900 ki te aple pa miyon fonksyon an, ki te aple pa binky fonksyon an, 378 00:29:23,900 --> 00:29:26,460 ki te aple pa prensipal la. 379 00:29:26,460 --> 00:29:31,680 Nou ka wè tou agiman yo sa yo fonksyon. 380 00:29:31,680 --> 00:29:34,680 Agiman a miyon ak binky te 1. 381 00:29:34,680 --> 00:29:44,390 Si nou lis oh_no fonksyon an, nou wè ke oh_no se jis ap fè Char ** s = nil; 382 00:29:44,390 --> 00:29:47,410 * S = "boom"; 383 00:29:47,410 --> 00:29:50,330 Poukisa ta ke fail? 384 00:29:54,330 --> 00:29:58,380 [Elèv] Ou pa ka dèreferans konsèy la nil? >> Yeah. 385 00:29:58,380 --> 00:30:06,090 Sa a se jis di yo se nil, kèlkeswa si sa rive yo dwe yon ** Char, 386 00:30:06,090 --> 00:30:12,070 ki, depann sou ki jan ou esplike l ', li te kapab fè yon konsèy nan yon konsèy nan yon fisèl 387 00:30:12,070 --> 00:30:15,550 oswa yon etalaj de strings. 388 00:30:15,550 --> 00:30:21,430 Li nan s se nil, se konsa * s se dereferencing yon konsèy nil, 389 00:30:21,430 --> 00:30:24,800 ak kidonk sa a ki pral aksidan. 390 00:30:24,800 --> 00:30:27,540 Sa a se youn nan fason ki pi rapid ou ka posib segfault. 391 00:30:27,540 --> 00:30:31,300 Li nan jis deklare yon konsèy nil epi imedyatman segfaulting. 392 00:30:31,300 --> 00:30:34,570 Sa a ki sa oh_no ap fè. 393 00:30:34,570 --> 00:30:43,400 Si nou ale yon sèl ankadreman, lè sa a nou pral jwenn nan fonksyon an ke yo rele oh_no. 394 00:30:43,400 --> 00:30:44,830 Mwen bezwen fè bagay sa a. 395 00:30:44,830 --> 00:30:48,610 Si ou pa antre nan yon lòd, epi ou jis frape Antre ankò, 396 00:30:48,610 --> 00:30:52,350 li pral jis repete lòd la anvan ke ou kouri. 397 00:30:52,350 --> 00:30:56,610 Nou se nan ankadreman 1. 398 00:30:56,610 --> 00:31:04,650 Lis sa a ankadreman, nou wè isit la se fonksyon nou an. 399 00:31:04,650 --> 00:31:08,520 Ou ka frape lis ankò, oswa ou kapab fè lis 20 epi li ap gen lis pi plis. 400 00:31:08,520 --> 00:31:13,640 Miyon nan fonksyon di si mwen se 1, lè sa a ale nan fonksyon an oh_no, 401 00:31:13,640 --> 00:31:15,960 lòt ale nan fonksyon an sinueu. 402 00:31:15,960 --> 00:31:18,700 E nou konnen, mwen se 1 paske nou rive wè moute isit la 403 00:31:18,700 --> 00:31:22,560 te ki miyon rele ak agiman sa 1. 404 00:31:22,560 --> 00:31:27,560 Oswa ou ka jis enprime mwen epi li pral di mwen se 1. 405 00:31:27,560 --> 00:31:33,770 Nou se kounye a nan miyon, epi si nou moute yon lòt ankadreman, nou konnen nou pral fini nan binky. 406 00:31:33,770 --> 00:31:36,600 Up. Koulye a, nou ap nan binky. 407 00:31:36,600 --> 00:31:41,340 Lis sa a fonksyon - lis ki sou devan mwatye koupe m 'wete - 408 00:31:41,340 --> 00:31:52,670 li te kòmanse koupe tankou si m 'se 0, lè sa a nou pral rele li oh_no, lòt bagay rele miyon. 409 00:31:52,670 --> 00:31:57,000 Nou konnen mwen te 1, se konsa li rele miyon. 410 00:31:57,000 --> 00:32:05,030 Epi, koulye a nou ap tounen nan prensipal yo, ak prensipal se jis pral fè int mwen = rand ()% 3; 411 00:32:05,030 --> 00:32:08,790 Sa se sèlman pral ba ou yon nimewo o aza ke se swa 0, 1, oswa 2. 412 00:32:08,790 --> 00:32:12,780 Li nan ale nan rele binky avèk nimewo, epi li pral retounen 0. 413 00:32:12,780 --> 00:32:16,700 Gade sa a, 414 00:32:16,700 --> 00:32:19,880 jis mache nan pwogram nan manyèlman san kouri li imedyatman, 415 00:32:19,880 --> 00:32:25,400 ou ta mete yon pwen repo nan prensipal yo, ki vle di ke lè nou kouri pwogram nan 416 00:32:25,400 --> 00:32:31,020 pwogram ou an kouri moute jiskaske li frape yon pwen repo. 417 00:32:31,020 --> 00:32:35,450 Se konsa, kouri pwogram nan, li pral kouri ak Lè sa a, li pral frape fonksyon prensipal epi yo sispann kouri. 418 00:32:35,450 --> 00:32:44,700 Koulye a, nou ap andedan nan prensipal yo, ak etap oswa pwochen ki pral pou mennen nou nan liy lan pwochen nan kòd. 419 00:32:44,700 --> 00:32:47,050 Ou kapab fè etap oswa kap vini an. 420 00:32:47,050 --> 00:32:51,800 Frape pwochen, koulye a mwen te mete rand ()% 3, pou nou ka enprime valè a nan mwen, 421 00:32:51,800 --> 00:32:55,280 epi li pral di mwen se 1. 422 00:32:55,280 --> 00:32:58,110 Koulye a, li fè sa pwoblèm si nou itilize pwochen oswa etap. 423 00:32:58,110 --> 00:33:01,000 Mwen devine li konte nan yon sèl anvan an, men nou ta vle sèvi ak pwochen. 424 00:33:01,000 --> 00:33:06,000 Si nou itilize etap, nou etap antre nan fonksyon an, ki vle di gade nan bagay la reyèl 425 00:33:06,000 --> 00:33:07,940 ki k ap pase andedan nan binky. 426 00:33:07,940 --> 00:33:10,510 Si nou itilize vini yo, Lè sa a, sa vle di li ale sou fonksyon an 427 00:33:10,510 --> 00:33:14,070 ak jis ale nan liy lan pwochen nan kòd nan fonksyon prensipal nou an. 428 00:33:14,070 --> 00:33:17,900 Dwa isit la sou liy sa a, mwen te nan kote li te di rand ()% 3; 429 00:33:17,900 --> 00:33:21,320 si m 'te fè etap, li t ap antre nan aplikasyon de rand 430 00:33:21,320 --> 00:33:25,110 ak gade sa k ap pase a, ak mwen te kapab etap nan fonksyon an rand. 431 00:33:25,110 --> 00:33:26,920 Men, mwen pa pran swen sou fonksyon an rand. 432 00:33:26,920 --> 00:33:30,190 Mwen jis vle pou yo ale nan liy lan pwochen nan kòd nan prensipal yo, Se konsa, mwen sèvi ak pwochen. 433 00:33:30,190 --> 00:33:35,800 Men koulye a, mwen fè swen sou fonksyon an binky, se konsa mwen vle etap antre nan sa. 434 00:33:35,800 --> 00:33:37,730 Koulye a, mwen nan binky. 435 00:33:37,730 --> 00:33:42,040 Liy nan premye nan kòd la pwal di si (mwen == 0), mwen pran yon etap, 436 00:33:42,040 --> 00:33:44,930 nou wè nou fini nan miyon. 437 00:33:44,930 --> 00:33:51,620 Si nou bagay sa yo lis, nou wè ke li tcheke se mwen = 0. 438 00:33:51,620 --> 00:33:55,470 mwen se pa egal a 0, se konsa li te ale nan kondisyon an lòt bagay, 439 00:33:55,470 --> 00:33:59,540 ki se ale nan rele miyon (mwen). 440 00:33:59,540 --> 00:34:04,030 Ou ta ka resevwa konfonn. 441 00:34:04,030 --> 00:34:07,380 Si ou jis gade nan liy sa yo dirèkteman, ou ta ka panse si (mwen == 0), 442 00:34:07,380 --> 00:34:10,800 oke, Lè sa a, mwen te pran yon etap e kounye a, mwen nan miyon (mwen), 443 00:34:10,800 --> 00:34:14,120 ou ta ka panse ke yo dwe vle di mwen = 0 oswa yon bagay. 444 00:34:14,120 --> 00:34:18,980 No Li jis vle di ke li konnen li ka bwa dirèkteman nan miyon nan liy (mwen). 445 00:34:18,980 --> 00:34:23,300 Paske mwen se pa 0, pwochen etap la pa pral fini nan lòt la. 446 00:34:23,300 --> 00:34:26,239 Lòt Bagay se pa yon liy li a pral kanpe nan. 447 00:34:26,239 --> 00:34:31,570 Li nan jis pral pou yo ale nan liy lan pwochen li ka aktyèlman egzekite, ki se miyon (mwen). 448 00:34:31,570 --> 00:34:36,090 Stepping nan miyon (mwen), nou wè si (mwen == 1). 449 00:34:36,090 --> 00:34:42,670 Nou konnen mwen = 1, Se konsa, lè nou etap, nou konnen nou pral fini nan oh_no 450 00:34:42,670 --> 00:34:46,489 paske mwen = 1 rele oh_no fonksyon an, ki ou ka etap antre nan, 451 00:34:46,489 --> 00:34:52,969 ki se ale nan mete Char ** s = nil epi imedyatman "boom". 452 00:34:54,270 --> 00:34:59,690 Lè sa a, aktyèlman gade nan aplikasyon an nan buggy2, 453 00:34:59,690 --> 00:35:04,590 sa a, mwen se jis ou jwenn yon nimewo o aza - 0, 1, oswa 2 - w rele nan binky, 454 00:35:04,590 --> 00:35:10,610 ki si mwen se 0 li mande oh_no, lòt moun li rele miyon, ki vini leve isit la. 455 00:35:10,610 --> 00:35:18,100 Si m 'se 1, rele oh_no, lòt bagay rele sinueu, ki vini isit la, 456 00:35:18,100 --> 00:35:20,460 si mwen se 2, rele oh_no. 457 00:35:20,460 --> 00:35:24,720 Mwen pa menm panse ke gen se yon fason - 458 00:35:24,720 --> 00:35:30,030 nenpòt moun ki wè yon fason pou fè sa a yon pwogram ki pa pral segfault? 459 00:35:30,030 --> 00:35:37,530 Paske sof si mwen manke yon bagay, si mwen se 0, ou pral imedyatman segfault, 460 00:35:37,530 --> 00:35:41,250 lòt bagay ou ale nan yon fonksyon ki si mwen se 1 ou segfault, 461 00:35:41,250 --> 00:35:44,540 lòt bagay ou ale nan yon fonksyon kote si mwen se 2 ou segfault. 462 00:35:44,540 --> 00:35:46,810 Se konsa, pa gen pwoblèm sa ou fè sa, ou segfault. 463 00:35:46,810 --> 00:35:52,380 >> Mwen devine yon fason nan repare-l ta dwe olye de fè Char ** s = nil, 464 00:35:52,380 --> 00:35:55,610 ou ta ka malok espas pou ke fisèl. 465 00:35:55,610 --> 00:36:04,230 Nou ta ka fè malok (sizof) - sizof ki sa? 466 00:36:09,910 --> 00:36:15,190 [Elèv] (Char) * 5? >> Sa a sanble dwa? 467 00:36:15,190 --> 00:36:21,060 Mwen asepte sa a ap travay si mwen aktyèlman kouri l ', men li pa sa m ap chache pou. 468 00:36:24,400 --> 00:36:32,940 Gade nan ki kalite s. Se pou nou ajoute int *, se konsa int * x. 469 00:36:32,940 --> 00:36:35,600 Mwen ta fè malok (sizof (Int)). 470 00:36:35,600 --> 00:36:40,490 Oswa si mwen te vle yon etalaj de 5, mwen ta fè (sizof (Int) * 5); 471 00:36:40,490 --> 00:36:44,210 E si mwen gen yon ** int? 472 00:36:46,260 --> 00:36:49,140 Ki sa ki ta mwen malok? 473 00:36:49,140 --> 00:36:53,510 [Elèv] Kantite moun ki nan konsèy la. >> Yeah. (Sizof (Int *)); 474 00:36:53,510 --> 00:36:56,960 Menm bagay desann isit la. 475 00:36:56,960 --> 00:37:01,280 Mwen vle (sizof (Char *)); 476 00:37:06,170 --> 00:37:12,840 Sa a se pral asiyen espas pou konsèy la ki lonje dwèt nan "boom". 477 00:37:12,840 --> 00:37:15,330 Mwen pa bezwen asiyen espas pou "boom" tèt li 478 00:37:15,330 --> 00:37:17,210 paske sa a se fondamantalman ekivalan a sa m 'te di anvan 479 00:37:17,210 --> 00:37:20,870 nan Char * x = "boom". 480 00:37:20,870 --> 00:37:27,950 "Boom" nou te deja egziste. Li k ap pase nan egziste nan rejyon an Read-Only nan memwa. 481 00:37:27,950 --> 00:37:35,200 Men, li deja egziste, ki vle di liy sa a nan kòd, si yo se yon ** Char, 482 00:37:35,200 --> 00:37:43,900 Lè sa a, * s se yon * Char ak w ap mete sa a * Char nan pwen nan "boom". 483 00:37:43,900 --> 00:37:50,040 Si mwen te vle yon kopi "boom" nan a, Lè sa a, mwen ta bezwen asiyen espas pou s. 484 00:37:55,170 --> 00:38:03,900 Mwen pral fè * s = malok (sizof (Char) * 5); 485 00:38:03,900 --> 00:38:06,210 Poukisa 5? 486 00:38:06,210 --> 00:38:10,860 Poukisa nou pa 4? Li sanble tankou "boom" se 4 karaktè. >> [Elèv] karaktè a nil. 487 00:38:10,860 --> 00:38:14,580 Yeah. Tout moun nan strings ou yo ale nan bezwen pèsonaj la nil. 488 00:38:14,580 --> 00:38:23,590 Koulye a, mwen ka fè yon bagay tankou strka - Ki fonksyon an pou kopye yon kòd? 489 00:38:23,590 --> 00:38:28,520 [Elèv] cpy? >> Strki. 490 00:38:28,520 --> 00:38:32,700 strki moun. 491 00:38:36,120 --> 00:38:39,590 Se konsa, strki oswa strki. 492 00:38:39,590 --> 00:38:43,410 strki se yon ti jan pi an sekirite depi ou ka presize egzakteman kouman anpil karaktè, 493 00:38:43,410 --> 00:38:46,190 men isit la li pa gen pwoblèm paske nou konnen. 494 00:38:46,190 --> 00:38:50,340 Se konsa, strki ak gade nan agiman sa yo. 495 00:38:50,340 --> 00:38:53,100 Agiman an premye se destinasyon nou an. 496 00:38:53,100 --> 00:38:56,770 Agiman Dezyèm se yon sous nou an. 497 00:38:56,770 --> 00:39:10,310 Nou pral fè kopi nan * destinasyon nou s konsèy "boom nan". 498 00:39:10,310 --> 00:39:19,820 Poukisa ta ka ou vle fè sa a ak yon strki olye pou yo jis ki sa nou te genyen anvan 499 00:39:19,820 --> 00:39:22,800 nan * s = "boom"? 500 00:39:22,800 --> 00:39:28,630 Gen yon rezon ou ta ka vle fè sa, men sa ki se ke rezon ki fè? 501 00:39:28,630 --> 00:39:31,940 [Elèv] Si ou vle chanje yon bagay nan "boom". >> Yeah. 502 00:39:31,940 --> 00:39:37,950 Koulye a, mwen ka fè yon bagay tankou s [0] = 'X'; 503 00:39:37,950 --> 00:39:48,190 paske pwen nan pil wòch la ak espas ki sou pil wòch la ke moun sa a montre 504 00:39:48,190 --> 00:39:52,320 se yon konsèy nan plis espas sou pil wòch la, ki se estoke "boom". 505 00:39:52,320 --> 00:39:55,150 Se konsa, sa a se kopi "boom" ke yo te ki estoke nan pil wòch la. 506 00:39:55,150 --> 00:39:58,780 Gen teknikman de kopi "boom" nan pwogram nou an. 507 00:39:58,780 --> 00:40:03,500 Genyen yon nan premye ki nan jis yo bay nan sa a "boom" konstan fisèl, 508 00:40:03,500 --> 00:40:09,250 ak kopi an dezyèm nan "boom", strki te kreye kopi a nan "boom". 509 00:40:09,250 --> 00:40:13,100 Men, se kopi a nan "boom" ke yo te ki estoke sou pil wòch la, ak pil wòch la w ap lib yo chanje. 510 00:40:13,100 --> 00:40:17,250 Pil wòch la se pa li-sèlman, se konsa ke vle di ke s [0] 511 00:40:17,250 --> 00:40:20,500 ki pral kite ou chanje valè la nan "boom". 512 00:40:20,500 --> 00:40:23,130 Li nan pral kite ou chanje sa yo karaktè. 513 00:40:23,130 --> 00:40:26,640 >> Kesyon? 514 00:40:27,740 --> 00:40:29,290 Oke. 515 00:40:29,290 --> 00:40:35,500 >> Deplase sou buggy3, buggy3 gdb kite l 'la. 516 00:40:35,500 --> 00:40:39,840 Nou jis kouri li ak nou wè nou jwenn yon segfault. 517 00:40:39,840 --> 00:40:46,550 Si nou baktras, gen sèlman de fonksyon. 518 00:40:46,550 --> 00:40:52,970 Si nou ale moute nan fonksyon prensipal nou yo, nou wè ke nou segfaulted nan liy sa a. 519 00:40:52,970 --> 00:41:00,180 Se konsa, jis gade nan liy sa a, pou (Int liy = 0; fje bagay sa a fè sa ki nil pa egal; 520 00:41:00,180 --> 00:41:03,770 liy + +). 521 00:41:03,770 --> 00:41:08,010 Te ankadreman anvan nou yo rele _IO_fgets. 522 00:41:08,010 --> 00:41:10,720 Ou ap wè ke yon anpil ak bati-an fonksyon C, 523 00:41:10,720 --> 00:41:15,350 ki lè ou jwenn segfault a, pral gen reyèlman skre non fonksyon 524 00:41:15,350 --> 00:41:18,090 tankou sa a _IO_fgets. 525 00:41:18,090 --> 00:41:21,770 Men, ki nan ale nan gen rapò ak sa a rele fje. 526 00:41:21,770 --> 00:41:25,850 Yon kote andedan isit la, nou ap segfaulting. 527 00:41:25,850 --> 00:41:30,340 Si nou gade nan agiman yo nan fje, nou ka enprime tanpon. 528 00:41:30,340 --> 00:41:41,180 Se pou nou enprime kòm yon - Oh, pa gen okenn. 529 00:41:48,980 --> 00:41:51,900 Ekri an lèt detache a pa pral travay egzakteman jan mwen vle l 'bay. 530 00:41:55,460 --> 00:41:58,000 Se pou yo gade nan pwogram aktyèl la. 531 00:42:02,200 --> 00:42:09,640 Tanpon se yon etalaj karaktè. Li se yon etalaj karaktè nan 128 karaktè. 532 00:42:09,640 --> 00:42:14,980 Se konsa, lè m 'di tanpon ekri ak lèt ​​detache, li te ale nan enprime sa yo karaktè 128, 533 00:42:14,980 --> 00:42:18,300 Mwen devine ki se ki sa yo espere. 534 00:42:18,300 --> 00:42:21,390 Ki sa mwen te kap chèche se enprime adrès la nan zòn de defans, 535 00:42:21,390 --> 00:42:23,680 men sa pa vrèman fè m 'konnen anpil. 536 00:42:23,680 --> 00:42:30,770 Se konsa, lè m 'rive di moute isit la x tanpon, li montre m' 0xbffff090, 537 00:42:30,770 --> 00:42:38,690 ki, si ou sonje soti nan pi bonè oswa pwen kèk, Oxbffff gen tandans ka yon rejyon chemine-ich. 538 00:42:38,690 --> 00:42:46,020 Chemine a gen tandans kòmanse yon kote jis anba 0xc000. 539 00:42:46,020 --> 00:42:51,890 Jis pa wè adrès sa a, mwen konnen ke zòn de defans sa k ap pase sou pil la. 540 00:42:51,890 --> 00:43:04,500 Relance pwogram m 'yo, kouri, leve, tanpon nou te wè sa te sekans nan karaktè 541 00:43:04,500 --> 00:43:06,530 ki se bèl anpil san sans. 542 00:43:06,530 --> 00:43:12,270 Lè sa a, enprime dosye, ki sa ki dosye sanble? 543 00:43:15,120 --> 00:43:17,310 [Elèv] vid. >> Yeah. 544 00:43:17,310 --> 00:43:22,610 Dosye a se yon nan * DOSYE kalite, se konsa li se yon konsèy, 545 00:43:22,610 --> 00:43:26,610 ak valè sa a nan konsèy se nil. 546 00:43:26,610 --> 00:43:33,240 Se konsa, fje ki pral eseye li soti nan ki konsèy nan yon fason endirèk, 547 00:43:33,240 --> 00:43:37,320 men yo nan lòd jwenn aksè nan ki konsèy, li gen dèreferans li. 548 00:43:37,320 --> 00:43:40,550 Oswa, yo nan lòd jwenn aksè nan ki sa li ta dwe montre a, li dereferences li. 549 00:43:40,550 --> 00:43:43,810 Se konsa li dereferencing yon konsèy nil epi li segfaults. 550 00:43:46,600 --> 00:43:48,730 Mwen te kapab rekòmanse li a. 551 00:43:48,730 --> 00:43:52,170 Si nou kraze nan pwen prensipal nou yo ak kouri, 552 00:43:52,170 --> 00:43:57,320 liy nan premye nan kòd se Char * fichier = "nonexistent.txt"; 553 00:43:57,320 --> 00:44:00,870 Sa ta dwe bay yon bèl allusion gwo kòm poukisa pwogram sa a echwe. 554 00:44:00,870 --> 00:44:06,080 Sezisman pwochen pote m 'nan liy nan pwochen, kote mwen louvri sa a ranpli, 555 00:44:06,080 --> 00:44:11,140 ak Lè sa a, mwen imedyatman jwenn nan liy nou an, kote yon fwa mwen frape pwochen, li te ale nan segfault. 556 00:44:11,140 --> 00:44:16,880 nenpòt moun ki vle voye jete soti yon rezon ki fè nou ta ka segfaulting? 557 00:44:16,880 --> 00:44:19,130 [Elèv] File pa egziste. >> Yeah. 558 00:44:19,130 --> 00:44:22,250 Sa a se sipoze yon allusion 559 00:44:22,250 --> 00:44:29,570 ke chak fwa w ap louvri yon dosye ou bezwen yo tcheke ki dosye a aktyèlman egziste. 560 00:44:29,570 --> 00:44:31,510 Se konsa, isit la, "nonexistent.txt"; 561 00:44:31,510 --> 00:44:34,700 Lè nou Fichier fopen pou lekti, nou Lè sa a, bezwen di 562 00:44:34,700 --> 00:44:45,870 si (dosye == nil) ak di printf ("File pa egziste!" 563 00:44:45,870 --> 00:44:56,340 oswa - pi bon toujou - Fichier); retounen 1; 564 00:44:56,340 --> 00:45:00,300 Se konsa, kounye a nou tcheke wè si li nan nil 565 00:45:00,300 --> 00:45:03,930 anvan aktyèlman ap kontinye ak ap eseye li soti nan ki dosye. 566 00:45:03,930 --> 00:45:08,800 Nou ka renouvèlman li jis wè ke ki travay. 567 00:45:11,020 --> 00:45:14,970 Mwen gen entansyon genyen ladan yo yon liy nouvo. 568 00:45:21,090 --> 00:45:25,290 Se konsa, kounye a nonexistent.txt pa egziste. 569 00:45:26,890 --> 00:45:30,040 Ou dwe toujou tcheke pou sa a sòt de bagay sa. 570 00:45:30,040 --> 00:45:33,870 Ou dwe toujou tcheke yo wè si fopen retounen nil. 571 00:45:33,870 --> 00:45:38,170 Ou dwe toujou tcheke a asire w ke malok pa retounen nil, 572 00:45:38,170 --> 00:45:41,410 oswa lòt moun ou segfault. 573 00:45:42,200 --> 00:45:45,930 >> Koulye a, buggy4.c. 574 00:45:49,190 --> 00:45:58,440 Kouri. Mwen devine sa a se ap tann pou D 'oswa loupin posib enfini. 575 00:45:58,440 --> 00:46:01,870 Wi, li nan loupin enfini. 576 00:46:01,870 --> 00:46:05,560 Se konsa, buggy4. Li sanble ke nou ap enfini loupin. 577 00:46:05,560 --> 00:46:12,590 Nou ka kraze nan prensipal yo, kouri pwogram nou an. 578 00:46:12,590 --> 00:46:20,180 Nan gdb, toutotan abrevyasyon nan ou itilize se anbigwite 579 00:46:20,180 --> 00:46:23,420 oswa abrevyasyon espesyal yo ke yo bay pou ou, 580 00:46:23,420 --> 00:46:29,020 Lè sa a, ou ka itilize n yo sèvi ak pwochen olye pou yo gen kalite soti pwochen tout wout la. 581 00:46:29,020 --> 00:46:33,730 Epi, koulye a ke mwen te frape n yon fwa, mwen ka jis frape Antre nan kenbe pral pwochen 582 00:46:33,730 --> 00:46:36,640 olye pou yo gen frape n Antre, n Antre, n Antre nan. 583 00:46:36,640 --> 00:46:44,630 Li sanble ke mwen ta nan kèk kalite pou riban ki nan anviwònman etalaj [mwen] a 0. 584 00:46:44,630 --> 00:46:50,510 Li sanble ke mwen pa janm mwen kraze soti nan sa a pou riban. 585 00:46:50,510 --> 00:46:54,780 Si m 'enprime mwen, se konsa mwen se 2, Lè sa a, mwen pral ale kap vini an. 586 00:46:54,780 --> 00:46:59,250 Mwen pral enprime, mwen se 3, Lè sa a, mwen pral ale kap vini an. 587 00:46:59,250 --> 00:47:05,360 Mwen pral enprime mwen e mwen se 3. Next, enprime, mwen se 4. 588 00:47:05,360 --> 00:47:14,520 Aktyèlman, ekri ak lèt ​​detache sizof (etalaj), se konsa yo piti yo gen etalaj a se 20. 589 00:47:16,310 --> 00:47:32,870 Men, li sanble gen nan kèk lòd gdb espesyal pou ale jouk yon bagay k ap pase. 590 00:47:32,870 --> 00:47:37,620 Se tankou mete yon kondisyon sou valè a nan varyab la. Men, mwen pa sonje sa li ye. 591 00:47:37,620 --> 00:47:44,100 Se konsa, si nou kenbe prale - 592 00:47:44,100 --> 00:47:47,120 Kisa nou t'ap di a? Ki sa ou te pote yo moute? 593 00:47:47,120 --> 00:47:50,500 [Elèv] montre mwen ajoute - >> Yeah. Se konsa, montre m ka ede w. 594 00:47:50,500 --> 00:47:54,530 Si nou jis montre mwen, li pral mete isit la sa ki valè a nan mwen se 595 00:47:54,530 --> 00:47:56,470 Se konsa, mwen pa bezwen enprime li chak fwa. 596 00:47:56,470 --> 00:48:02,930 Si nou jis kenbe pral vini yo, nou wè 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 Yon bagay ki pral fò anpil sa ki mal, e mwen se ke yo te Reyajiste a 0. 598 00:48:13,330 --> 00:48:22,220 Gade nan buggy4.c, nou wè tout sa ki k ap pase se etalaj int [5]; 599 00:48:22,220 --> 00:48:26,200 pou (mwen = 0; mwen <= sizof (etalaj); mwen + +) 600 00:48:26,200 --> 00:48:28,550 etalaj [mwen] = 0; 601 00:48:28,550 --> 00:48:31,390 Kisa nou wè sa a, se sa ki mal isit la? 602 00:48:31,390 --> 00:48:39,480 Kòm yon allusion, lè mwen te fè gdb a buggy4 - kite a kraze prensipal yo, kouri - 603 00:48:39,480 --> 00:48:45,980 Mwen t 'ekri ak lèt ​​detache sizof (etalaj) jis yo wè sa ki kondisyon an se kote m' ta dwe finalman kraze deyò. 604 00:48:47,690 --> 00:48:51,100 Ki kote m 'ye? Èske mwen kouri? 605 00:48:51,100 --> 00:48:54,280 Mwen pa t 'deklare ankò. 606 00:48:54,280 --> 00:48:58,680 Se konsa, enprime sizof (etalaj) ak sa a, se 20, 607 00:48:58,680 --> 00:49:06,690 ki espere depi etalaj mwen, se yon nan gwosè 5 ak li a nan 5 nonm antye yo, 608 00:49:06,690 --> 00:49:12,410 se konsa bagay la tout antye yo ta dwe 5 * sizof (Int) bytes, kote sizof (Int) gen tandans ka 4. 609 00:49:12,410 --> 00:49:14,780 Se konsa, sizof (etalaj) se 20. 610 00:49:14,780 --> 00:49:17,420 Kisa mwen ta dwe sa a ta dwe ye? 611 00:49:17,420 --> 00:49:21,720 [Elèv] divize pa sizof (Int). >> Yeah, / sizof (Int). 612 00:49:21,720 --> 00:49:30,630 Li sanble ke gen nan toujou yon pwoblèm isit la. Mwen panse ke sa a ta dwe jis pou < 613 00:49:30,630 --> 00:49:36,960 depi li nan bèl anpil toujou 00:49:44,860 Koulye a, kite nan panse sou poukisa sa a te aktyèlman kase. 615 00:49:44,860 --> 00:49:53,370 nenpòt moun ki te Estimation poukisa yo te mwen Reyajiste a 0 nan chak iterasyon nan riban an? 616 00:50:01,300 --> 00:50:09,350 Bagay la sèlman andedan nan isit la ke k ap pase se ke etalaj [mwen] se ke yo te mete a 0. 617 00:50:09,350 --> 00:50:15,350 Se konsa, yon jan kanmenm, liy sa a nan kòd ki lakòz int nou mwen yo dwe mete a 0. 618 00:50:16,730 --> 00:50:23,130 [Elèv] t 'kapab li dwe paske li nan aksyon net memwa a nan pati sa a nan mwen 619 00:50:23,130 --> 00:50:27,970 lè li panse li nan eleman nan pwochen nan etalaj? >> [Bowden] Wi. 620 00:50:27,970 --> 00:50:33,880 Lè nou ap ale pi lwen pase nan fen etalaj nou an, 621 00:50:33,880 --> 00:50:39,870 yon jan kanmenm espas sa a ke nou ap aksyon net la aksyon net valè a nan mwen. 622 00:50:39,870 --> 00:50:48,030 Se konsa, si nou gade nan buggy4 a, kase prensipal yo, kouri, 623 00:50:48,030 --> 00:50:53,120 kite a enprime adrès ki nan mwen. 624 00:50:53,120 --> 00:50:57,280 Li sanble ke li nan bffff124. 625 00:50:57,280 --> 00:51:03,930 Koulye a, kite a enprime adrès la nan etalaj [0]. 110. 626 00:51:03,930 --> 00:51:06,290 Ki sa ki sou [1]? 114. 627 00:51:06,290 --> 00:51:07,920 [2], 118. 628 00:51:07,920 --> 00:51:14,530 11C, 120. etalaj [5] se bfff124. 629 00:51:14,530 --> 00:51:26,990 Se konsa, etalaj [5] la gen menm adrès ak mwen, ki vle di ke etalaj [5] se mwen. 630 00:51:26,990 --> 00:51:30,720 Si yo gen adrès la menm yo, yo se menm bagay la. 631 00:51:30,720 --> 00:51:38,410 Se konsa, lè nou mete etalaj [5] a 0, nou ap mete mwen a 0. 632 00:51:38,410 --> 00:51:46,070 Men, si ou panse osijè de sa a an tèm de chemine a, 633 00:51:46,070 --> 00:51:55,590 int mwen yo te deklare premye, ki vle di mwen vin kèk espas sou pil la. 634 00:51:55,590 --> 00:52:04,730 Lè sa a, etalaj [5] se afekte, se konsa Lè sa a, 20 bytes resevwa lajan sou pil la. 635 00:52:04,730 --> 00:52:08,400 Se konsa, mwen vin afekte an premye, Lè sa a, sa yo bytes 20 jwenn afekte. 636 00:52:08,400 --> 00:52:11,400 Se konsa, mwen k ap pase dwat devan etalaj la, 637 00:52:11,400 --> 00:52:19,230 epi paske nan wout la, tankou m 'te di semèn pase a, kote teknikman chemine a ap grandi desann, 638 00:52:19,230 --> 00:52:28,520 lè ou endèks nan yon etalaj, n ap garanti ke pozisyon nan 0th nan etalaj la 639 00:52:28,520 --> 00:52:31,970 toujou k ap pase anvan pozisyon an pwemye nan etalaj la. 640 00:52:31,970 --> 00:52:35,900 Sa a se kalite ki jan mwen te trase li semèn pase a. 641 00:52:35,900 --> 00:52:42,210 Remake nan pati anba a nou gen adrès 0 ak nan tèt la nou gen Max adrès. 642 00:52:42,210 --> 00:52:44,880 Chemine a ap toujou ap grandi desann. 643 00:52:48,100 --> 00:52:53,500 Se pou nou di nou asiyen mwen. 644 00:52:53,500 --> 00:52:59,680 Nou asiyen nonb antye relatif mwen, ki vle di nan kite l 'jis di moute isit la nonb antye relatif mwen vin afekte. 645 00:52:59,680 --> 00:53:06,420 Lè sa a, nou asiyen etalaj nou an 5 nonm antye yo, ki vle di ke anba ke, 646 00:53:06,420 --> 00:53:11,230 depi chemine a ap grandi desann, sa yo ki nonb antye relatif 5 jwenn afekte. 647 00:53:11,230 --> 00:53:15,900 Men, paske se sou kouman ranje travay, n ap garanti ke pozisyon an pwemye nan etalaj la 648 00:53:15,900 --> 00:53:22,260 toujou gen yon adrès mwens pase bagay la dezyèm nan etalaj la. 649 00:53:22,260 --> 00:53:28,270 Se konsa, 0 pozisyon etalaj toujou gen rive an premye nan memwa, 650 00:53:28,270 --> 00:53:30,700 Lè nou konsidere ke pozisyon etalaj 1 gen rive apre sa 651 00:53:30,700 --> 00:53:33,310 ak pozisyon etalaj 2 gen rive apre sa, 652 00:53:33,310 --> 00:53:37,900 ki vle di ke 0 pozisyon etalaj ta rive yon kote anba isit la, 653 00:53:37,900 --> 00:53:40,690 pozisyon etalaj 1 ta rive pi wo a ki 654 00:53:40,690 --> 00:53:45,530 paske k ap deplase moute vle di pi gwo adrès depi adrès la maksimòm se leve isit la. 655 00:53:45,530 --> 00:53:50,490 Se konsa, etalaj [0] desann isit la, etalaj [1] moute isit la, etalaj [2] moute isit la, etalaj [3] moute isit la. 656 00:53:50,490 --> 00:53:55,620 Avi sou jan anvan nou resevwa lajan nonb antye relatif mwen tout wout la moute isit la, 657 00:53:55,620 --> 00:54:01,040 kòm nou avanse pli lwen e pli lwen nan etalaj nou an, nou ap vin pi pwòch ak pi pre nonb antye relatif nou mwen. 658 00:54:01,040 --> 00:54:07,640 Li jis konsa k ap pase ki etalaj [5], ki se youn pozisyon pi lwen pase etalaj nou an, 659 00:54:07,640 --> 00:54:13,010 se egzakteman ki kote nonm antye mwen te rive yo dwe afekte. 660 00:54:13,010 --> 00:54:16,920 Se konsa, sa a, se pwen kote nou rive yo dwe frape espas ki la sou chemine a 661 00:54:16,920 --> 00:54:21,680 ki te resevwa lajan pou nonb antye relatif mwen, epi nou ap mete ke a 0. 662 00:54:21,680 --> 00:54:26,160 >> Sa a ki jan ki travay. Kesyon? Yeah. 663 00:54:26,160 --> 00:54:30,710 [Elèv] Pa janm lide. Oke. 664 00:54:30,710 --> 00:54:33,090 [Elèv] Ki jan ou evite sa yo sòt de erè? 665 00:54:33,090 --> 00:54:41,190 Sa yo sòt de erè? Pa sèvi ak C kòm lang programmation ou a. 666 00:54:41,190 --> 00:54:45,840 Sèvi ak yon lang ki gen avèk limit etalaj tcheke. 667 00:54:45,840 --> 00:54:55,900 Osi lontan ke ou se atansyon, ou jis bezwen pou fè pou evite pral sot pase avèk limit yo nan etalaj ou a. 668 00:54:55,900 --> 00:54:58,300 [Elèv] Se konsa, isit la, lè nou te ale sot pase avèk limit yo nan etalaj ou - 669 00:54:58,300 --> 00:55:01,840 [Bowden] Sa a kote bagay sa yo kòmanse pral mal. >> [Elèv] Oh, oke. 670 00:55:01,840 --> 00:55:05,730 Osi lontan ke ou rete nan memwa a afekte pou etalaj ou a, ou se amann. 671 00:55:05,730 --> 00:55:12,400 Men, C fè sa ki pa gen okenn kont kouran erè. Si m 'fè etalaj [1000], li pral kè kontan jis modifye tou sa k ap pase - 672 00:55:12,400 --> 00:55:16,500 Li ale nan konmansman an nan etalaj la, Lè sa a, li ale 1000 pozisyon apre epi li kouche li a 0. 673 00:55:16,500 --> 00:55:20,000 Li pa fè ankenn kont kouran ki oh, sa a pa gen aktyèlman 1000 bagay sa yo nan li. 674 00:55:20,000 --> 00:55:22,750 1000 se yon fason pi lwen pase sa m 'ta dwe chanje, 675 00:55:22,750 --> 00:55:26,940 Lè nou konsidere ke Java oswa yon bagay ou pral jwenn etalaj soti nan endèks avèk limit 676 00:55:26,940 --> 00:55:29,820 oswa endèks soti nan eksepsyon limit. 677 00:55:29,820 --> 00:55:33,950 Se poutèt sa yon anpil nan pi wo nivo lang gen bagay sa yo 678 00:55:33,950 --> 00:55:37,340 kote si ou ale pi lwen pase limit ki nan etalaj la, ou fail 679 00:55:37,340 --> 00:55:40,070 pou ke ou pa kapab chanje bagay sa yo soti nan anba ou 680 00:55:40,070 --> 00:55:42,590 ak Lè sa a, bagay sa yo ale pi mal pase jis ap resevwa yon eksepsyon 681 00:55:42,590 --> 00:55:44,940 di ke ou te ale pi lwen pase nan fen etalaj la. 682 00:55:44,940 --> 00:55:50,970 [Elèv] Se konsa, yo ta dwe nou te jis chanje <= jis > [Bowden] Yeah. 683 00:55:50,970 --> 00:55:54,800 Li ta dwe 00:55:59,560 depi sizof (etalaj) a se 20, men nou sèlman vle 5. >> [Elèv] Dwa. 685 00:55:59,560 --> 00:56:04,060 Plis kesyon? Oke. 686 00:56:04,060 --> 00:56:07,380 >> [Elèv] Mwen gen yon kesyon. >> Yeah. 687 00:56:07,380 --> 00:56:16,440 [Elèv] Ki sa ki varyab la etalaj aktyèl? 688 00:56:16,440 --> 00:56:20,000 [Bowden] Tankou sa ki etalaj? 689 00:56:20,000 --> 00:56:24,930 Etalaj tèt li se yon senbòl. 690 00:56:24,930 --> 00:56:31,490 Li se jis adrès ki nan kòmansman an nan 20 bytes yo ke nou ap indican. 691 00:56:31,490 --> 00:56:38,070 Ou ka panse a li kòm yon konsèy, men li se yon konsèy konstan. 692 00:56:38,070 --> 00:56:44,140 Le pli vit ke bagay sa yo jwenn konpile, etalaj la varyab pa egziste ankò. 693 00:56:44,140 --> 00:56:48,210 [Elèv] Se konsa, li montre kouman li jwenn gwosè a nan etalaj? 694 00:56:48,210 --> 00:56:54,130 Kantite moun ki nan etalaj refere a gwosè a nan ki blòk ki ki senbòl refere a. 695 00:56:54,130 --> 00:57:01,240 Lè m 'fè yon bagay tankou printf ("% p \ n", etalaj); 696 00:57:01,240 --> 00:57:05,140 kite a kouri li. 697 00:57:12,960 --> 00:57:15,530 Ki sa ki t 'mwen jis fè sa ki mal? 698 00:57:15,530 --> 00:57:19,220 'Etalaj' etalaj deklare isit la. 699 00:57:20,820 --> 00:57:23,200 Oh, moute isit la. 700 00:57:23,200 --> 00:57:31,250 Sonnen se entelijan, epi li k ap pase nan avi ke mwen te deklare etalaj la kòm 5 eleman 701 00:57:31,250 --> 00:57:34,540 men mwen m 'Indexing nan pozisyon 1000. 702 00:57:34,540 --> 00:57:38,450 Li ka fè sa paske sa yo, se jis konstan. 703 00:57:38,450 --> 00:57:43,370 Li ka sèlman ale twò lwen nan remarke ke mwen m 'pral pi lwen pase limit ki nan etalaj la. 704 00:57:43,370 --> 00:57:46,880 Men, remake anvan lè nou te gen m 'rete nan kòrèk, 705 00:57:46,880 --> 00:57:51,040 li pa ka pètèt detèmine konbyen valè mwen te kapab pran sou, 706 00:57:51,040 --> 00:57:55,540 se konsa li pa kapab detèmine ke mwen te ale pi lwen pase nan fen etalaj la. 707 00:57:55,540 --> 00:57:59,430 Se jis rezone yo te entelijan. 708 00:57:59,430 --> 00:58:03,340 >> Men koulye a, fè buggy4. Se konsa, ki lòt bagay mwen fè sa ki mal? 709 00:58:03,340 --> 00:58:05,970 Chal deklare fonksyon bibliyotèk 'printf'. 710 00:58:05,970 --> 00:58:14,960 Mwen pral vle # enkli . 711 00:58:14,960 --> 00:58:18,710 Oke. Koulye a, kouri buggy4. 712 00:58:18,710 --> 00:58:24,840 Enpresyon valè a nan etalaj la tankou mwen te fè isit la, enprime li kòm yon konsèy 713 00:58:24,840 --> 00:58:30,060 simagri yon bagay ki sanble ak sa a - bfb8805c - ki se kèk adrès 714 00:58:30,060 --> 00:58:33,450 sa a, se nan rejyon an chemine-ich. 715 00:58:33,450 --> 00:58:41,820 Etalaj tèt li se tankou yon konsèy, men li se pa yon konsèy reyèl, 716 00:58:41,820 --> 00:58:45,410 depi yon konsèy regilye nou kapab chanje. 717 00:58:45,410 --> 00:58:54,700 Etalaj se jis kèk konstan. Blòk yo 20 nan memwa kòmanse nan 0xbfb8805c adrès. 718 00:58:54,700 --> 00:59:09,020 Se konsa, bfb8805c nan adrès sa a +20--oswa mwen devine -20 - 719 00:59:09,020 --> 00:59:17,400 se tout nan memwa a afekte pou sa a etalaj. 720 00:59:17,400 --> 00:59:20,350 Etalaj, varyab la li menm se pa sa ki estoke nenpòt kote. 721 00:59:20,350 --> 00:59:27,660 Lè w ap konpile, du a - vag men nan li - 722 00:59:27,660 --> 00:59:33,060 men du a pral jis itilize kote li konnen etalaj yo dwe. 723 00:59:33,060 --> 00:59:36,090 Li konnen ki kote pozisyon kòmanse, 724 00:59:36,090 --> 00:59:40,910 ak sa li ka toujou jis fè bagay sa yo an tèm de konpansasyon soti nan ki kòmansman. 725 00:59:40,910 --> 00:59:43,960 Li pa bezwen yon varyab tèt li reprezante etalaj. 726 00:59:43,960 --> 00:59:53,730 Men, lè m 'fè yon bagay tankou int * p etalaj =; kounye a p se yon konsèy ki pwen ak sa yo ki etalaj, 727 00:59:53,730 --> 00:59:57,830 e kounye a, p aktyèlman egziste sou pil la. 728 00:59:57,830 --> 01:00:01,950 Mwen lib yo chanje p. Mwen kapab fè p = malok. 729 01:00:01,950 --> 01:00:06,500 Se konsa, li orijinal pwente etalaj; kounye a li lonje dwèt nan kèk espas sou pil la. 730 01:00:06,500 --> 01:00:09,620 Mwen pa kapab fè etalaj = malok. 731 01:00:09,620 --> 01:00:13,710 Si sonnen se entelijan, li pral rele nan m 'dwa koupe baton an. 732 01:00:17,000 --> 01:00:21,430 Aktyèlman, mwen sèten GCC ta fè sa tou. 733 01:00:21,430 --> 01:00:25,010 Se konsa, kalite etalaj 'int [5]' se pa sede. 734 01:00:25,010 --> 01:00:28,040 Ou pa ka bay yon bagay nan yon kalite etalaj 735 01:00:28,040 --> 01:00:30,500 paske etalaj se jis yon konstan. 736 01:00:30,500 --> 01:00:34,760 Li se yon senbòl ki referans sa yo bytes 20. Mwen pa kapab chanje li. 737 01:00:34,760 --> 01:00:37,690 >> [Elèv] Lè ki kote gwosè a nan etalaj la ki estoke? 738 01:00:37,690 --> 01:00:40,670 [Bowden] Li pa nan ki estoke nenpòt kote. Li nan lè li nan konpile. 739 01:00:40,670 --> 01:00:46,310 Se konsa, ki kote gwosè a nan etalaj ki estoke? 740 01:00:46,310 --> 01:00:51,870 Ou ka itilize sèlman sizof (etalaj) andedan nan fonksyon sa a, ki etalaj la te deklare tèt li. 741 01:00:51,870 --> 01:01:03,150 Se konsa, si m 'fè kèk fonksyon, foo, epi mwen fè (Int etalaj []) 742 01:01:03,150 --> 01:01:10,450 printf ("% d \ n", sizof (etalaj)); 743 01:01:10,450 --> 01:01:21,330 ak Lè sa a, desann isit la mwen rele foo (etalaj); 744 01:01:21,330 --> 01:01:24,840 andedan nan fonksyon sa a - kite a kouri li. 745 01:01:34,200 --> 01:01:36,840 Sa a se sonnen yo te entelijan ankò. 746 01:01:36,840 --> 01:01:43,890 Li nan di m 'ki sizof sou paramèt fonksyon etalaj 747 01:01:43,890 --> 01:01:46,690 ap retounen gwosè nan '* int'. 748 01:01:46,690 --> 01:01:55,150 Sa a ta dwe yon erè si li pa sa m 'te vle rive. 749 01:01:55,150 --> 01:01:58,960 Se pou nou aktyèlman fèmen Werror. 750 01:02:14,950 --> 01:02:17,590 Avètisman. Avètisman yo se amann. 751 01:02:17,590 --> 01:02:19,960 Li pral toujou konpile osi lontan ke li gen yon avètisman. 752 01:02:19,960 --> 01:02:22,910 . / A.out ki pral enprime 4. 753 01:02:22,910 --> 01:02:28,650 Avètisman an ki te pwodwi se yon endikatè ki klè nan sa ki ale mal. 754 01:02:28,650 --> 01:02:34,120 Sa a etalaj int se jis ale nan enprime sizof (Int *). 755 01:02:34,120 --> 01:02:39,790 Menm si mwen mete etalaj [5] nan isit la, li la toujou jis pral enprime sizof (Int *). 756 01:02:39,790 --> 01:02:47,440 Se konsa, le pli vit ke w fin pase l 'nan yon fonksyon, distenksyon ki genyen ant ranje ak endikasyon 757 01:02:47,440 --> 01:02:49,670 se inègzistan. 758 01:02:49,670 --> 01:02:52,640 Sa a k ap pase yo yon etalaj ki te deklare sou chemine a, 759 01:02:52,640 --> 01:02:58,300 men le pli vit ke nou pase ki valè, ki 0xbf bla, bla, bla nan fonksyon sa a, 760 01:02:58,300 --> 01:03:03,350 Lè sa a, sa a konsèy lonje dwèt ak sa yo ki etalaj sou pil la. 761 01:03:03,350 --> 01:03:08,310 Se konsa, ki vle di ke sizof aplike sèlman nan fonksyon ki te etalaj la te deklare, 762 01:03:08,310 --> 01:03:11,230 ki vle di ke lè w ap konpile sa a fonksyon, 763 01:03:11,230 --> 01:03:17,330 lè rezone ale nan fonksyon sa a, li wè etalaj la se yon etalaj int nan gwosè 5. 764 01:03:17,330 --> 01:03:20,640 Se konsa, Lè sa a, li wè sizof (etalaj). Oke, ki nan 20. 765 01:03:20,640 --> 01:03:26,440 Sa a se aktyèlman ki jan sizof fondamantalman travay pou prèske tout ka yo. 766 01:03:26,440 --> 01:03:31,150 Sizof se pa yon fonksyon m; li nan yon operatè. 767 01:03:31,150 --> 01:03:33,570 Ou pa rele fonksyon an sizof. 768 01:03:33,570 --> 01:03:38,280 Sizof (Int), du a pral jis tradui ki a 4. 769 01:03:41,480 --> 01:03:43,700 Te resevwa li? Oke. 770 01:03:43,700 --> 01:03:47,520 >> [Elèv] Se konsa, sa se diferans ki genyen ant sizof (etalaj) nan prensipal ak nan foo? 771 01:03:47,520 --> 01:03:52,840 Sa a se paske nou ap di sizof (etalaj), ki se nan * int kalite, 772 01:03:52,840 --> 01:03:57,120 Lè nou konsidere ke etalaj la desann isit la se pa nan * int kalite, li nan yon etalaj int. 773 01:03:57,120 --> 01:04:04,540 >> [Elèv] Se konsa, si ou te gen paramèt la nan etalaj [] olye pou yo int etalaj *, 774 01:04:04,540 --> 01:04:09,230 ta sa vle di ke ou ta ka toujou chanje pozisyon paske kounye a li nan yon konsèy? 775 01:04:09,230 --> 01:04:14,250 [Bowden] Tankou sa a? >> [Elèv] Yeah. Èske ou ka chanje pozisyon nan fonksyon an kounye a? 776 01:04:14,250 --> 01:04:18,420 [Bowden] Ou te kapab chanje pozisyon nan tou de ka. 777 01:04:18,420 --> 01:04:23,130 Nan tou de ka sa yo ou yo gratis yo di etalaj [4] = 0. 778 01:04:23,130 --> 01:04:26,590 [Elèv] Men, ou ka fè pwen etalaj yon lòt bagay? 779 01:04:26,590 --> 01:04:30,230 [Bowden] Oh. Yeah. Nan nenpòt ka - >> [elèv] Yeah. 780 01:04:30,230 --> 01:04:38,410 [Bowden] distenksyon ki genyen ant etalaj [] ak yon etalaj * Int, pa gen. 781 01:04:38,410 --> 01:04:42,570 Ou kapab tou jwenn kèk etalaj pluridimansyonèl nan isit la 782 01:04:42,570 --> 01:04:47,050 pou kèk sentaks pratik, men li la toujou jis yon konsèy. 783 01:04:47,050 --> 01:04:56,400 Sa vle di se mwen menm ki gratis fè etalaj = malok (sizof (Int)); e kounye a, pwen yon lòt kote. 784 01:04:56,400 --> 01:04:59,610 Men, jis tankou ki jan sa ap travay pou tout tan ak toujou, 785 01:04:59,610 --> 01:05:03,210 chanje sa a etalaj pa fè li lonje dwèt sou yon lòt bagay 786 01:05:03,210 --> 01:05:07,570 pa chanje sa a etalaj desann isit la paske li nan yon kopi agiman an, 787 01:05:07,570 --> 01:05:10,780 li pa yon konsèy ak sa yo ki agiman. 788 01:05:10,780 --> 01:05:16,070 Ak aktyèlman, menm jan plis endikasyon ke li nan ekzakteman menm bagay la - 789 01:05:16,070 --> 01:05:21,100 nou deja wè simagri sa ki etalaj enprime - 790 01:05:21,100 --> 01:05:31,410 ki sa si nou enprime adrès la nan etalaj la oswa adrès la nan adrès ki nan etalaj la 791 01:05:31,410 --> 01:05:36,290 swa kot moun sa yo? 792 01:05:41,770 --> 01:05:45,220 Se pou nou inyore sa a youn. 793 01:05:48,140 --> 01:05:51,660 Oke. Sa a se amann. Li nan kounye a kouri. / A.out. 794 01:05:51,660 --> 01:06:00,220 Etalaj enprime, Lè sa a, enprime adrès la nan etalaj la, ki se menm bagay la. 795 01:06:00,220 --> 01:06:02,870 Etalaj jis pa egziste. 796 01:06:02,870 --> 01:06:08,190 Li konnen lè w ap enprime etalaj, w ap enprime senbòl la ki refere a sa yo bytes 20. 797 01:06:08,190 --> 01:06:11,940 Enpresyon adrès la nan etalaj la, byen, etalaj pa egziste. 798 01:06:11,940 --> 01:06:17,200 Li pa gen yon adrès, se konsa li jis simagri adrès la nan 20 moun ki bytes. 799 01:06:20,820 --> 01:06:28,150 Osito ke ou konpile desann, renmen nan konpile buggy4 ou an. / A.out, 800 01:06:28,150 --> 01:06:30,340 etalaj se inègzistan. 801 01:06:30,340 --> 01:06:33,640 Endikasyon egziste. Matris pa fè sa. 802 01:06:34,300 --> 01:06:38,060 Blòk yo nan memwa ki reprezante etalaj la toujou egziste, 803 01:06:38,060 --> 01:06:43,270 men etalaj la varyab ak varyab la ki kalite pa egziste. 804 01:06:46,260 --> 01:06:50,270 Moun sa yo se tankou diferans ki prensipal ant ranje ak endikasyon 805 01:06:50,270 --> 01:06:55,590 yo osito ke w fè apèl fonksyon, pa gen okenn diferans. 806 01:06:55,590 --> 01:07:00,460 Men, andedan nan fonksyon sa a, ki etalaj la li menm te deklare, sizof travay yon fason diferan 807 01:07:00,460 --> 01:07:05,190 depi w ap enprime gwosè a nan blòk yo olye pou yo gwosè a nan kalite la, 808 01:07:05,190 --> 01:07:08,950 epi ou pa kapab chanje li paske li nan yon senbòl. 809 01:07:08,950 --> 01:07:14,370 Enpresyon bagay la ak adrès la nan bagay la simagri menm bagay la. 810 01:07:14,370 --> 01:07:18,480 Epi sa a, bèl anpil li. 811 01:07:18,480 --> 01:07:20,820 [Elèv] Èske ou ta kapab di ke yon lòt fwa ankò? 812 01:07:21,170 --> 01:07:24,170 Mwen ta ka janm manke yon bagay. 813 01:07:24,170 --> 01:07:29,260 Etalaj Enpresyon ak adrès etalaj simagri menm bagay la, 814 01:07:29,260 --> 01:07:33,180 Lè nou konsidere ke si ou enprime yon konsèy kont adrès ki nan konsèy la, 815 01:07:33,180 --> 01:07:36,010 bagay la yon sèl simagri adrès la nan ki sa w ap lonje dwèt a, 816 01:07:36,010 --> 01:07:40,360 lòt la simagri adrès ki nan konsèy la sou pil la. 817 01:07:40,360 --> 01:07:47,040 Ou ka chanje yon konsèy; ou pa kapab chanje yon senbòl etalaj. 818 01:07:47,740 --> 01:07:53,270 Ak sizof konsèy ki pral enprime gwosè a nan ki kalite konsèy. 819 01:07:53,270 --> 01:07:57,470 Se konsa, int * p sizof (p) ki pral enprime 4, 820 01:07:57,470 --> 01:08:04,110 men int etalaj [5] ekri ak lèt ​​detache sizof (etalaj) ki pral enprime 20. 821 01:08:04,110 --> 01:08:07,480 [Elèv] Se konsa, int etalaj [5] pral enprime 20? >> Wi. 822 01:08:07,480 --> 01:08:13,300 Se poutèt sa andedan buggy4 lè li itilize yo dwe sizof (etalaj) 823 01:08:13,300 --> 01:08:16,660 sa a te fè mwen <20, ki se pa sa nou te vle. 824 01:08:16,660 --> 01:08:20,880 Nou vle mwen <5. >> [Elèv] Okay. 825 01:08:20,880 --> 01:08:25,569 [Bowden] Lè sa a, le pli vit ke ou kòmanse pase nan fonksyon yo, 826 01:08:25,569 --> 01:08:34,340 si nou te fè sa int * P = etalaj; 827 01:08:34,340 --> 01:08:39,779 andedan nan fonksyon sa a, nou ka fondamantalman itilize p ak etalaj nan egzakteman fason yo menm, 828 01:08:39,779 --> 01:08:43,710 eksepte pou pwoblèm nan sizof ak pwoblèm nan chanje. 829 01:08:43,710 --> 01:08:49,810 Men, p [0] = 1; se menm bagay la kòm li di etalaj [0] = 1; 830 01:08:49,810 --> 01:08:55,600 Ak le pli vit ke nou di foo (etalaj); oswa foo (p); 831 01:08:55,600 --> 01:08:59,760 andedan nan fonksyon an foo, sa a se apèl la menm de fwa. 832 01:08:59,760 --> 01:09:03,350 Pa gen okenn diferans ant de sa yo apèl. 833 01:09:07,029 --> 01:09:11,080 >> Tout moun bon sou sa? Oke. 834 01:09:14,620 --> 01:09:17,950 Nou gen 10 minit. 835 01:09:17,950 --> 01:09:28,319 >> N ap eseye jwenn nan pwogram sa a Typer pirataj, 836 01:09:28,319 --> 01:09:32,350 sit wèb sa a, yo te soti kite ane pase a oswa yon bagay. 837 01:09:34,149 --> 01:09:41,100 Li nan jis sipoze tankou ou tape owaza epi li simagri soti - 838 01:09:41,100 --> 01:09:46,729 Kèlkeswa dosye li k ap pase nan yo te chaje se sa ki li sanble tankou w ap tape. 839 01:09:46,729 --> 01:09:52,069 Li sanble ke kèk kalite opere kòd sistèm. 840 01:09:53,760 --> 01:09:56,890 Sa a ki sa nou vle aplike. 841 01:10:08,560 --> 01:10:11,690 Ou ta dwe gen yon ègzèkutabl binè te rele hacker_typer 842 01:10:11,690 --> 01:10:14,350 ki pran nan yon diskisyon sèl, dosye a nan "kalite aker." 843 01:10:14,350 --> 01:10:16,480 Kouri ègzèkutabl a ta dwe klè ekran an 844 01:10:16,480 --> 01:10:20,850 ak Lè sa a, enprime soti yon karaktè nan dosye a fin pase-a chak fwa itilizatè a apwi yon kle. 845 01:10:20,850 --> 01:10:24,990 Se konsa, tou sa ou peze kle yo, li ta dwe voye jete lwen ak olye enprime yon karaktè soti nan dosye a 846 01:10:24,990 --> 01:10:27,810 ki se agiman an. 847 01:10:29,880 --> 01:10:34,350 Mwen pral bèl anpil di w ki sa bagay sa yo nou ap ale nan bezwen konnen yo se. 848 01:10:34,350 --> 01:10:36,440 Men, nou vle tcheke deyò bibliyotèk la termios. 849 01:10:36,440 --> 01:10:44,840 Mwen pa janm te itilize sa a bibliyotèk nan tout lavi m ', se konsa li gen rezon trè minim. 850 01:10:44,840 --> 01:10:48,610 Men, sa a se pral fè bibliyotèk la nou ka itilize yo jete karaktè a ou frape 851 01:10:48,610 --> 01:10:52,390 lè w ap tape nan estanda pous 852 01:10:56,970 --> 01:11:05,840 Se konsa, hacker_typer.c, epi nou ap ale nan vle # enkli . 853 01:11:05,840 --> 01:11:12,870 Gade nan paj la nonm pou termios - I'm devinèt tèminal li nan OS oswa yon bagay - 854 01:11:12,870 --> 01:11:16,240 Mwen pa konnen kijan li li. 855 01:11:16,240 --> 01:11:21,040 Gade sa a, li di yo mete sa yo dosye 2, konsa nou pral fè sa. 856 01:11:37,620 --> 01:11:46,820 >> Premye bagay premye, nou vle pran m 'nan yon diskisyon sèl, ki se dosye a nou ta dwe louvri. 857 01:11:46,820 --> 01:11:52,420 Se konsa, sa m 'vle fè? Kouman pou mwen tcheke wè mwen gen yon agiman yon sèl? 858 01:11:52,420 --> 01:11:56,480 [Elèv] Si arg egal li. >> [Bowden] Yeah. 859 01:11:56,480 --> 01:12:21,250 Se konsa, si (arg = 2!) Printf ("itilizasyon:% s [dosye yo louvri]"). 860 01:12:21,250 --> 01:12:32,750 Se konsa, kounye a si mwen kouri sa a san yo pa founi yon agiman dezyèm - o, mwen bezwen liy nan nouvo - 861 01:12:32,750 --> 01:12:36,240 ou pral wè li di l ':. / hacker_typer, 862 01:12:36,240 --> 01:12:39,770 ak Lè sa a, agiman nan dezyèm ta dwe dosye a mwen vle louvri. 863 01:12:58,430 --> 01:13:01,260 Kounye a ki sa mwen dwe fè? 864 01:13:01,260 --> 01:13:08,490 Mwen vle li nan sa a dosye. Kouman pou mwen li nan yon dosye? 865 01:13:08,490 --> 01:13:11,920 [Elèv] Ou louvri li an premye. >> Yeah. 866 01:13:11,920 --> 01:13:15,010 Se konsa, fopen. Ki sa ki fopen sanble? 867 01:13:15,010 --> 01:13:22,980 [Elèv] fichier. >> [Bowden] fichier a pwal argv [1]. 868 01:13:22,980 --> 01:13:26,110 [Elèv] Lè sa a, ki sa ou vle fè ak li, pou - >> [Bowden] Yeah. La 869 01:13:26,110 --> 01:13:28,740 Se konsa, si nou pa t 'sonje, ou jis ta ka fè fopen moun, 870 01:13:28,740 --> 01:13:32,960 kote li pral gen yon konstitisyon chemen Char * kote chemen se fichier, 871 01:13:32,960 --> 01:13:34,970 Konstitisyon * Char mòd. 872 01:13:34,970 --> 01:13:38,660 Si ou rive pa a sonje sa mòd se, Lè sa a, ou ka gade pou mòd. 873 01:13:38,660 --> 01:13:44,660 Anndan nan paj nonm, pèsonaj la koupe a se sa ki ou ka itilize pou fè rechèch pou bagay sa yo. 874 01:13:44,660 --> 01:13:49,790 Se konsa, mwen tape / mòd pou fè rechèch pou mòd. 875 01:13:49,790 --> 01:13:57,130 n ak N yo se sa ki ou ka itilize yo sik atravè alimèt rechèch la. 876 01:13:57,130 --> 01:13:59,800 Isit la li di pwen yo mòd agiman nan yon fisèl 877 01:13:59,800 --> 01:14:01,930 kòmanse ak youn nan sekans sa yo. 878 01:14:01,930 --> 01:14:06,480 Se konsa, r, Open tèks dosye pou lekti. Sa a ki sa nou vle fè. 879 01:14:08,930 --> 01:14:13,210 Pou lekti, e mwen vle nan magazen sa. 880 01:14:13,210 --> 01:14:18,720 Bagay la a pwal yon * DOSYE. Kounye a ki sa mwen vle fè? 881 01:14:18,720 --> 01:14:21,200 Ban m 'yon dezyèm fwa. 882 01:14:28,140 --> 01:14:30,430 Oke. Kounye a ki sa mwen vle fè? 883 01:14:30,430 --> 01:14:32,940 [Elèv] Tcheke si li nan nil. >> [Bowden] Yeah. 884 01:14:32,940 --> 01:14:38,690 Nenpòt ki lè w louvri yon dosye, asire w ke ou se avèk siksè kapab louvri li. 885 01:14:58,930 --> 01:15:10,460 >> Koulye a, mwen vle fè sa bagay termios kote mwen vle premye li anviwònman mwen ye kounye a 886 01:15:10,460 --> 01:15:14,050 epi sove moun ki nan yon bagay, Lè sa a, mwen ta vle chanje anviwònman m ' 887 01:15:14,050 --> 01:15:19,420 jete nenpòt karaktè ke mwen tape, 888 01:15:19,420 --> 01:15:22,520 ak Lè sa a, mwen vle mete ajou sa yo anviwònman. 889 01:15:22,520 --> 01:15:27,250 Lè sa a, nan fen pwogram lan, mwen ta vle chanje tounen nan anviwònman orijinal mwen. 890 01:15:27,250 --> 01:15:32,080 Se konsa, struct an a pwal nan termios tip, ak mwen pral vle de moun sa yo. 891 01:15:32,080 --> 01:15:35,600 Youn nan premye a pwal current_settings m 'yo, 892 01:15:35,600 --> 01:15:42,010 ak Lè sa a, yo pwal santi yo dwe hacker_settings m 'yo. 893 01:15:42,010 --> 01:15:48,070 Premyèman, mwen pral vle sove anviwònman aktyèl m 'yo, 894 01:15:48,070 --> 01:15:53,790 Lè sa a, mwen pral vle mete ajou hacker_settings, 895 01:15:53,790 --> 01:16:01,570 ak Lè sa a, fason nan fen pwogram m 'yo, mwen vle retounen anba anviwònman aktyèl. 896 01:16:01,570 --> 01:16:08,660 Se konsa, ekonomize anviwònman ye kounye a, wout la ki travay, nou termios moun. 897 01:16:08,660 --> 01:16:15,810 Nou wè ke nou gen sa a tcsetattr Int, Int tcgetattr. 898 01:16:15,810 --> 01:16:22,960 Mwen pase nan yon struct termios pa konsèy li yo. 899 01:16:22,960 --> 01:16:30,640 Wout la sa a pral gade se - I've deja bliye sa ki te fonksyon an rele. 900 01:16:30,640 --> 01:16:34,930 Kopi ak keratin li. 901 01:16:39,150 --> 01:16:45,500 Se konsa, tcgetattr, lè sa a mwen vle pase nan struct a ke mwen ekonomize enfòmasyon ki nan, 902 01:16:45,500 --> 01:16:49,650 ki a pwal current_settings, 903 01:16:49,650 --> 01:16:59,120 ak agiman an premye se dèskripteur nan dosye pou bagay la mwen vle pou konsève pou atribi ki pou. 904 01:16:59,120 --> 01:17:04,360 Ki sa ki dèskripteur nan dosye se, se tankou nenpòt ki lè ou louvri yon dosye, li vin yon dèskripteur dosye-a. 905 01:17:04,360 --> 01:17:14,560 Lè m 'fopen argv [1], li vin yon dèskripteur dosye ki w ap indican 906 01:17:14,560 --> 01:17:16,730 nenpòt lè ou vle li oswa ekri nou nan li. 907 01:17:16,730 --> 01:17:19,220 Sa se pa dèskripteur nan dosye mwen vle itilize isit la. 908 01:17:19,220 --> 01:17:21,940 Gen twa deskriptè dosye ou gen pa default, 909 01:17:21,940 --> 01:17:24,310 ki se estanda nan, estanda soti, ak erè estanda. 910 01:17:24,310 --> 01:17:29,960 Pa default, mwen panse ke li nan estanda nan se 0, estanda soti se 1, ak erè estanda se 2. 911 01:17:29,960 --> 01:17:33,980 Se konsa, sa m 'vle chanje anviwònman yo nan? 912 01:17:33,980 --> 01:17:37,370 Mwen vle chanje anviwònman yo nan nenpòt lè mwen frape yon karaktè, 913 01:17:37,370 --> 01:17:41,590 Mwen vle li nan jete ki karaktè lwen olye pou yo enprime li a ekran an. 914 01:17:41,590 --> 01:17:45,960 Ki sa ki kouran - estanda nan, soti estanda, oswa erè estanda - 915 01:17:45,960 --> 01:17:52,050 reponn a bagay sa yo lè m 'tape nan klavye a? >> [Elèv] Creole pous >> Yeah. 916 01:17:52,050 --> 01:17:56,450 Se konsa, mwen ka swa fè 0 oswa mwen kapab fè stden. 917 01:17:56,450 --> 01:17:59,380 Mwen ap resevwa current_settings a nan estanda pous 918 01:17:59,380 --> 01:18:01,720 >> Koulye a, mwen vle mete ajou sa yo anviwònman, 919 01:18:01,720 --> 01:18:07,200 konsa premye fwa mwen pral kopye nan hacker_settings sa ki current_settings m ', se. 920 01:18:07,200 --> 01:18:10,430 Ak ki jan strukt travay se li pral jis yon kopi. 921 01:18:10,430 --> 01:18:14,510 Sa a kopi tout jaden yo, menm jan ou ta atann. 922 01:18:14,510 --> 01:18:17,410 >> Koulye a, mwen vle mete ajou kèk nan jaden yo. 923 01:18:17,410 --> 01:18:21,670 Gade nan termios, ou ta gen li nan yon anpil nan sa a 924 01:18:21,670 --> 01:18:24,110 jis yo wè sa ki ou ta vle gade pou li a, 925 01:18:24,110 --> 01:18:28,210 men drapo yo w ap ale nan vle gade pou yo se eko, 926 01:18:28,210 --> 01:18:33,110 Se konsa repete apre lòt fin karaktè D 'eko. 927 01:18:33,110 --> 01:18:37,710 Premye fwa mwen vle mete - I've deja bliye sa jaden yo ye. 928 01:18:45,040 --> 01:18:47,900 Sa a se sa struct a sanble. 929 01:18:47,900 --> 01:18:51,060 Se konsa, mòd opinyon mwen panse ke nou vle chanje. 930 01:18:51,060 --> 01:18:54,210 Nou pral gade nan solisyon an a asire w ke nan ki sa nou vle chanje. 931 01:19:04,060 --> 01:19:12,610 Nou ta vle chanje lflag yo nan lòd yo anpeche ki bezwen yo gade atravè tout bagay sa yo. 932 01:19:12,610 --> 01:19:14,670 Nou ta vle chanje mòd lokal yo. 933 01:19:14,670 --> 01:19:17,710 Ou ta gen li nan bagay sa a tout antye yo konprann kote tout bagay ki dwe 934 01:19:17,710 --> 01:19:19,320 ke nou vle chanje. 935 01:19:19,320 --> 01:19:24,120 Men, li la anndan mòd lokal kote n ap pral vle chanje sa. 936 01:19:27,080 --> 01:19:33,110 Se konsa, hacker_settings.cc_lmode se sa ki sa yo rele. 937 01:19:39,630 --> 01:19:43,020 c_lflag. 938 01:19:49,060 --> 01:19:52,280 Sa a se kote nou jwenn nan operatè lojik. 939 01:19:52,280 --> 01:19:54,860 Nou se kalite soti nan tan, men nou pwal ale nan li rapid reyèl. 940 01:19:54,860 --> 01:19:56,600 Sa a se kote nou jwenn nan lojik operatè yo, 941 01:19:56,600 --> 01:19:59,950 kote mwen panse mwen te di ke youn tan lontan ke nenpòt lè ou kòmanse fè fas ak drapo, 942 01:19:59,950 --> 01:20:03,370 w ap ale nan dwe lè l sèvi avèk lojik operatè anpil. 943 01:20:03,370 --> 01:20:08,240 Chak ti jan nan drapo a koresponn ak kèk sòt de konpòtman. 944 01:20:08,240 --> 01:20:14,090 Se konsa, isit la, sa a drapo a gen yon pakèt moun sou bagay sa yo diferan, kote tout nan yo vle di yon bagay diferan. 945 01:20:14,090 --> 01:20:18,690 Men, sa ki mwen vle fè se jis fèmen ti jan a ki koresponn ak repete apre lòt fin. 946 01:20:18,690 --> 01:20:25,440 Se konsa, yo vire ki wete m 'fè & = ¬ repete apre lòt fin. 947 01:20:25,440 --> 01:20:30,110 Aktyèlman, mwen panse ke li la tankou tECHO oswa yon bagay. Mwen jis ale nan tcheke ankò. 948 01:20:30,110 --> 01:20:34,050 Mwen ka termios li. Li nan jis repete apre lòt fin. 949 01:20:34,050 --> 01:20:38,440 Repete apre lòt fin a pwal yon ti jan sèl. 950 01:20:38,440 --> 01:20:44,230 ¬ repete apre lòt fin ki pral vle di tout Bits yo mete nan 1, ki vle di tout drapo yo mete vre 951 01:20:44,230 --> 01:20:47,140 eksepte pou ti jan a repete apre lòt fin. 952 01:20:47,140 --> 01:20:53,830 By fini drapo lokal mwen an ak sa a, sa vle di tout drapo ki aktyèlman ap mete nan vre 953 01:20:53,830 --> 01:20:56,520 yo pral toujou mete vre. 954 01:20:56,520 --> 01:21:03,240 Si yo drapo repete apre lòt fin m 'mete nan verite a, Lè sa a, sa a se nesesèman mete fo sou drapo a repete apre lòt fin. 955 01:21:03,240 --> 01:21:07,170 Se konsa, liy sa a nan kòd jis vire sou drapo a repete apre lòt fin. 956 01:21:07,170 --> 01:21:16,270 Liy ki lòt kote nan kòd, mwen pral jis kopi yo nan enterè yo nan tan ak Lè sa a, eksplike yo. 957 01:21:27,810 --> 01:21:30,180 Nan solisyon an, li te di 0. 958 01:21:30,180 --> 01:21:33,880 Li pwobableman pi bon yo ouvètman di stden. 959 01:21:33,880 --> 01:21:42,100 >> Remake mwen tou fè repete apre lòt fin | ICANON isit la. 960 01:21:42,100 --> 01:21:46,650 ICANON refere a yon bagay ki apa a, ki vle di mòd kanonyal. 961 01:21:46,650 --> 01:21:50,280 Ki sa ki vle di kanonyal mòd se nòmalman lè w ap tape soti nan liy lòd, 962 01:21:50,280 --> 01:21:54,670 estanda nan pa trete anyen toutotan ou poko frape newline. 963 01:21:54,670 --> 01:21:58,230 Se konsa, lè ou GetString, ou tape yon pakèt moun sou bagay sa yo, Lè sa a, ou frape newline. 964 01:21:58,230 --> 01:22:00,590 Sa a se lè li nan voye nan estanda pous 965 01:22:00,590 --> 01:22:02,680 Sa a default la. 966 01:22:02,680 --> 01:22:05,830 Lè m 'fèmen kanonyal mòd, kounye a chak karaktè sèl ou peze 967 01:22:05,830 --> 01:22:10,910 se sa vin trete, ki se nòmalman kalite move paske li nan ralanti nan pwosesis sa yo bagay sa yo, 968 01:22:10,910 --> 01:22:14,330 ki se poukisa li a bon tanpon l 'nan liy tout antye. 969 01:22:14,330 --> 01:22:16,810 Men, mwen vle nan chak karaktè ap trete 970 01:22:16,810 --> 01:22:18,810 depi m 'pa vle li rete tann pou mwen pou m frape newline 971 01:22:18,810 --> 01:22:21,280 anvan li trete tout karaktè yo mwen te sezisman. 972 01:22:21,280 --> 01:22:24,760 Sa a vire nan mòd kanonyal. 973 01:22:24,760 --> 01:22:31,320 Bagay sa a jis vle di lè li aktyèlman trete karaktè. 974 01:22:31,320 --> 01:22:35,830 Sa vle di travay sou yo imedyatman; le pli vit ke mwen sezisman yo, travay sou yo. 975 01:22:35,830 --> 01:22:42,510 Ak sa a se fonksyon la ki se mete ajou anviwònman mwen an pou estanda nan, 976 01:22:42,510 --> 01:22:45,480 ak mwayen TCSA fè li kounye a. 977 01:22:45,480 --> 01:22:50,310 Opsyon yo lòt yo tann jiskaske yo tout bagay ki se kounye a sou kouran an trete. 978 01:22:50,310 --> 01:22:52,030 Sa pa reyèlman gen pwoblèm. 979 01:22:52,030 --> 01:22:56,920 Jis kounye a chanje anviwònman mwen an kapab fè nenpòt sa se kounye a nan hacker_typer_settings. 980 01:22:56,920 --> 01:23:02,210 Mwen devine mwen rele l 'hacker_settings, kidonk kite a chanje sa. 981 01:23:09,610 --> 01:23:13,500 Chanje tout bagay sa yo hacker_settings. 982 01:23:13,500 --> 01:23:16,870 >> Koulye a, nan fen pwogram nou an, nou ap ale nan vle retounen 983 01:23:16,870 --> 01:23:20,210 nan sa se kounye a andedan nan normal_settings, 984 01:23:20,210 --> 01:23:26,560 ki se pral jis gade tankou & normal_settings. 985 01:23:26,560 --> 01:23:30,650 Avi mwen pa te chanje nenpòt nan normal_settings mwen an depi orijinal jwenn li. 986 01:23:30,650 --> 01:23:34,520 Lè sa a, jis chanje yo tounen, mwen pase yo tounen nan fen an. 987 01:23:34,520 --> 01:23:38,390 Sa a te mete ajou nan. Oke. 988 01:23:38,390 --> 01:23:43,900 >> Koulye a, anndan isit la mwen pral jis eksplike kòd la nan enterè an de tan. 989 01:23:43,900 --> 01:23:46,350 Li pa ke kòd anpil. 990 01:23:50,770 --> 01:24:03,750 Nou wè nou li yon karaktè nan dosye a. Nou rele l 'f. 991 01:24:03,750 --> 01:24:07,850 Koulye a, ou kapab fgetc nonm, men ki jan fgetc ki pral travay 992 01:24:07,850 --> 01:24:11,910 se jis li a pral retounen pèsonaj la ke ou jis li oswa èof, 993 01:24:11,910 --> 01:24:15,680 ki koresponn nan fen a nan dosye a oswa kèk kap pase erè. 994 01:24:15,680 --> 01:24:19,900 Nou ap loupin, kontinye li yon karaktè sèl nan dosye a, 995 01:24:19,900 --> 01:24:22,420 jiskaske nou te kouri soti nan karaktè li. 996 01:24:22,420 --> 01:24:26,650 Ak pandan n ap fè sa, nou tann sou yon karaktè sèl soti nan estanda pous 997 01:24:26,650 --> 01:24:29,090 Chak fwa yon sèl ou tape yon bagay nan liy lan lòd, 998 01:24:29,090 --> 01:24:32,820 ki nan lekti nan yon karaktè soti nan estanda pous 999 01:24:32,820 --> 01:24:38,330 Lè sa a, putchar se jis pral mete Char nan nou li moute isit la nan dosye a soti estanda. 1000 01:24:38,330 --> 01:24:42,890 Ou kapab putchar moun, men li jis mete estanda soti, li nan enprime ki karaktè. 1001 01:24:42,890 --> 01:24:51,600 Ou kapab tou jis fè printf ("c%", c); Menm lide. 1002 01:24:53,330 --> 01:24:56,670 Sa se pral fè èstime nan travay nou an. 1003 01:24:56,670 --> 01:25:00,300 >> Bagay la pase nou pral vle fè se jis fkloz dosye nou yo. 1004 01:25:00,300 --> 01:25:03,310 Si ou pa fkloz, sa se yon fwit memwa. 1005 01:25:03,310 --> 01:25:06,680 Nou vle fkloz dosye a nou orijinal louvri, e mwen panse ke nan li. 1006 01:25:06,680 --> 01:25:13,810 Si nou fè sa, mwen deja gen pwoblèm. 1007 01:25:13,810 --> 01:25:17,260 Ann gade pou wè. 1008 01:25:17,260 --> 01:25:19,960 Ki sa ki t 'li pote plent osijè de? 1009 01:25:19,960 --> 01:25:30,220 Espere 'int' men agiman se nan kalite 'struct _IO_FILE *'. 1010 01:25:36,850 --> 01:25:39,370 Nou pral wè si ki travay. 1011 01:25:45,210 --> 01:25:53,540 Se sèlman pèmèt nan C99. Augh. Okay, fè hacker_typer. 1012 01:25:53,540 --> 01:25:57,760 Koulye a, nou jwenn deskripsyon plis itil. 1013 01:25:57,760 --> 01:25:59,900 Se konsa, sèvi ak nan idantifyan sekrè 'normal_settings'. 1014 01:25:59,900 --> 01:26:04,170 Mwen pa t 'rele li normal_settings. Mwen rele l 'current_settings. 1015 01:26:04,170 --> 01:26:12,090 Se konsa, kite a chanje nan tout sa. 1016 01:26:17,920 --> 01:26:21,710 Koulye a, pase agiman. 1017 01:26:26,290 --> 01:26:29,500 Mwen pral fè sa-a 0 pou kounye a. 1018 01:26:29,500 --> 01:26:36,720 Oke. . / Hacker_typer cp.c. 1019 01:26:36,720 --> 01:26:39,590 Mwen menm mwen te pa t 'klè ekran an nan kòmansman an. 1020 01:26:39,590 --> 01:26:42,960 Men, ou ka gade tounen nan mete nan pwoblèm dènye yo wè ki jan ou klè ekran an. 1021 01:26:42,960 --> 01:26:45,160 Li nan jis enprime kèk karaktè 1022 01:26:45,160 --> 01:26:47,210 pandan y ap sa a ap fè sa m 'vle yo fè. 1023 01:26:47,210 --> 01:26:48,900 Oke. 1024 01:26:48,900 --> 01:26:55,280 Ak panse sou rezon ki fè sa a bezwen yo dwe 0 olye pou yo stden, 1025 01:26:55,280 --> 01:27:00,560 ki ta dwe # defini 0, 1026 01:27:00,560 --> 01:27:03,890 sa a se ki ap plenyen ke - 1027 01:27:13,150 --> 01:27:19,360 Anvan lè m 'te di ke gen nan deskriptè dosye men Lè sa a, nou menm tou nou gen * DOSYE ou a, 1028 01:27:19,360 --> 01:27:23,210 yon dèskripteur dosye se jis yon nonb antye relatif sèl, 1029 01:27:23,210 --> 01:27:26,970 Lè nou konsidere ke yon * DOSYE gen yon pakèt antye nan bagay ki asosye ak li. 1030 01:27:26,970 --> 01:27:30,380 Rezon ki fè nou bezwen di 0 olye pou yo stden 1031 01:27:30,380 --> 01:27:37,480 se ke stden se yon * DOSYE ki pwen bagay sa a, ki indican dèskripteur dosye 0. 1032 01:27:37,480 --> 01:27:45,070 Se konsa, menm moute isit la, lè m 'fè fopen (argv [1], mwen jwenn yon * DOSYE tounen. 1033 01:27:45,070 --> 01:27:51,180 Men, yon kote nan ki * DOSYE se yon bagay ki koresponn a dèskripteur nan dosye pou sa dosye. 1034 01:27:51,180 --> 01:27:57,430 Si ou gade nan paj la nonm pou louvri, Se konsa, mwen panse ou pral dwe fè nonm 3 louvri - non - 1035 01:27:57,430 --> 01:27:59,380 nonm 2 louvri - wi. 1036 01:27:59,380 --> 01:28:06,250 Si ou gade nan paj la pou ouvè, ouvè, se tankou yon fopen pi ba-nivo, 1037 01:28:06,250 --> 01:28:09,350 epi li retounen dèskripteur nan dosye aktyèl. 1038 01:28:09,350 --> 01:28:12,050 fopen fè yon pakèt moun sou bagay sou tèt ouvè, 1039 01:28:12,050 --> 01:28:17,640 ki olye pou yo retounen jis ki dèskripteur dosye retounen yon DOSYE antye * konsèy 1040 01:28:17,640 --> 01:28:20,590 andedan nan ki se dèskripteur dosye ti kras nou an. 1041 01:28:20,590 --> 01:28:25,020 Se konsa, estanda nan refere a bagay la * DOSYE, 1042 01:28:25,020 --> 01:28:29,120 Lè nou konsidere ke 0 refere a jis estanda nan dèskripteur dosye ki nan tèt li. 1043 01:28:29,120 --> 01:28:32,160 >> Kesyon? 1044 01:28:32,160 --> 01:28:35,930 [Ri] te Gate nan sa. 1045 01:28:35,930 --> 01:28:39,140 Tout dwa. Nou ap fè. [Ri] 1046 01:28:39,140 --> 01:28:42,000 >> [CS50.TV]