1 00:00:00,000 --> 00:00:02,490 [Powered by Google Translate] [CS50 Bibliyotèk] 2 00:00:02,490 --> 00:00:04,220 [Nate Hardison] [Inivèsite Harvard] 3 00:00:04,220 --> 00:00:07,260 [Sa a se CS50. CS50.TV] 4 00:00:07,260 --> 00:00:11,510 Bibliyotèk la CS50 se yon zouti itil ke nou te enstale sou aparèy la 5 00:00:11,510 --> 00:00:15,870 fè li pi fasil pou ou pou w ekri pwogram ki itilizatè yo èd memwa pou D '. 6 00:00:15,870 --> 00:00:21,670 Nan videyo sa a, nou pral rale tounen rido a ak gade nan ki sa egzakteman se nan bibliyotèk la CS50. 7 00:00:21,670 --> 00:00:25,520 >> Nan videyo a sou C bibliyotèk, nou pale sou fason ou # enkli Tèt dosye 8 00:00:25,520 --> 00:00:27,570 nan bibliyotèk la nan kòd sous ou a, 9 00:00:27,570 --> 00:00:31,150 ak Lè sa a, ou konekte avèk yon dosye bibliyotèk binè pandan faz la ki lye ak 10 00:00:31,150 --> 00:00:33,140 nan pwosesis la konpilasyon. 11 00:00:33,140 --> 00:00:36,440 Dosye yo header presize koòdone la nan bibliyotèk la. 12 00:00:36,440 --> 00:00:41,280 Sa se, yo detay tout resous yo ki bibliyotèk la gen disponib pou ou pou w itilize, 13 00:00:41,280 --> 00:00:45,250 tankou deklarasyon fonksyon, konstan, ak kalite done. 14 00:00:45,250 --> 00:00:48,890 Dosye a bibliyotèk binè gen aplikasyon an nan bibliyotèk la, 15 00:00:48,890 --> 00:00:54,580 ki se konpile nan dosye header bibliyotèk la ak nan bibliyotèk la. dosye c kòd sous. 16 00:00:54,580 --> 00:00:59,820 >> Dosye a bibliyotèk binè se pa trè enteresan fè yon gade nan depi li nan, byen, nan binè. 17 00:00:59,820 --> 00:01:03,300 Se konsa, kite a pran yon gade nan dosye yo header pou bibliyotèk la pito. 18 00:01:03,300 --> 00:01:07,710 Nan ka sa a, gen nan yon sèl dosye header rele cs50.h. 19 00:01:07,710 --> 00:01:11,040 Nou te enstale l 'nan itilizatè a gen ladan anyè 20 00:01:11,040 --> 00:01:15,150 ansanm ak dosye header bibliyotèk yo sistèm lòt '. 21 00:01:15,150 --> 00:01:21,530 >> Youn nan bagay ki premye ou pral avi se ke cs50.h # gen ladan dosye header nan bibliyotèk lòt - 22 00:01:21,530 --> 00:01:25,670 flote, limit, estanda bouleen, ak LIB estanda. 23 00:01:25,670 --> 00:01:28,800 Yon fwa ankò, swiv prensip la nan pa reenvante wou an, 24 00:01:28,800 --> 00:01:33,490 nou te bati nan bibliyotèk la lè l sèvi avèk zouti ki CS0 lòt bay pou nou. 25 00:01:33,490 --> 00:01:38,690 >> Bagay nan pwochen ou pral wè nan bibliyotèk la se ke nou defini yon kalite nouvo rele "fisèl." 26 00:01:38,690 --> 00:01:42,330 Liy sa a vrèman jis kreye yon alyas pou di ki kalite a * Char, 27 00:01:42,330 --> 00:01:46,000 konsa li pa maji enpreye kalite nan fisèl nouvo ak atribi 28 00:01:46,000 --> 00:01:49,650 souvan ki asosye avèk objè fisèl nan lòt lang yo, 29 00:01:49,650 --> 00:01:50,850 tankou longè. 30 00:01:50,850 --> 00:01:55,180 Rezon ki fè nou te fè sa a se pwoteje pwogramasyon nouvo soti nan detay yo esyon 31 00:01:55,180 --> 00:01:57,580 nan pwent yo jiskaske yo ap pare. 32 00:01:57,580 --> 00:02:00,130 >> Pati nan pwochen nan dosye a header se deklarasyon an nan fonksyon yo 33 00:02:00,130 --> 00:02:04,410 ki nan bibliyotèk la CS50 bay ansanm ak kopi dokiman yo. 34 00:02:04,410 --> 00:02:06,940 Avi nivo a detay nan kòmantè yo isit la. 35 00:02:06,940 --> 00:02:10,560 Sa a se super enpòtan pou ke moun yo konnen ki jan yo sèvi ak sa yo fonksyon. 36 00:02:10,560 --> 00:02:19,150 Nou deklare, nan vire, fonksyon vit itilizatè a ak charaktèr retou, double, flote, antye, 37 00:02:19,150 --> 00:02:24,160 long fin fou, ak strings, lè l sèvi avèk kalite pwòp fisèl nou an. 38 00:02:24,160 --> 00:02:26,260 Apre prensip la nan kache enfòmasyon, 39 00:02:26,260 --> 00:02:31,640 nou te mete definisyon nou yo nan yon separe dosye aplikasyon c -. cs50.c-- 40 00:02:31,640 --> 00:02:35,110 ki sitiye nan anyè a sous itilizatè. 41 00:02:35,110 --> 00:02:38,040 Nou te bay ke dosye pou ke ou ka pran yon gade nan li, 42 00:02:38,040 --> 00:02:41,490 aprann nan men li, epi compile l 'sou machin diferan si ou vle, 43 00:02:41,490 --> 00:02:45,510 menm si nou panse li pi bon travay sou aparèy la pou sa a nan klas la. 44 00:02:45,510 --> 00:02:47,580 Anyway, kite a pran yon gade nan li kounye a. 45 00:02:49,020 --> 00:02:54,620 >> Fonksyon yo GetChar, GetDouble, GetFloat, GetInt, ak GetLongLong 46 00:02:54,620 --> 00:02:58,160 , yo tout bati sou tèt fonksyon an GetString. 47 00:02:58,160 --> 00:03:01,510 Li sanble ke yo tout swiv esansyèlman modèl la menm. 48 00:03:01,510 --> 00:03:04,870 Yo sèvi ak yon riban pandan y ap akselere itilizatè a pou yon liy nan D '. 49 00:03:04,870 --> 00:03:08,430 Yo retounen yon valè espesyal si itilizatè a entrain yon liy vid. 50 00:03:08,430 --> 00:03:11,750 Yo eseye analizan D 'itilizatè a kòm kalite a ki apwopriye, 51 00:03:11,750 --> 00:03:15,010 se pou li yon Char, yon doub, yon flote, elatriye 52 00:03:15,010 --> 00:03:18,710 Lè sa a, yo swa retounen rezilta a si yo te D 'la avèk siksè parcouru 53 00:03:18,710 --> 00:03:21,330 oswa yo reprompt itilizatè a. 54 00:03:21,330 --> 00:03:24,230 >> Nan yon nivo segondè yo, pa gen anyen vrèman difisil isit la. 55 00:03:24,230 --> 00:03:28,760 Ou ta ka yo te ekri menm estriktire kòd tèt ou nan tan lontan an. 56 00:03:28,760 --> 00:03:34,720 Petèt pati ki pi skre-ap chèche se rele an sskanf ki pars D 'itilizatè a la. 57 00:03:34,720 --> 00:03:38,160 Sskanf se yon pati nan fanmi an konvèsyon fòma opinyon. 58 00:03:38,160 --> 00:03:42,300 Li ap viv nan io.h estanda, ak travay li se analizan yon fisèl C, 59 00:03:42,300 --> 00:03:46,520 dapre yon fòma an patikilye, estoke rezilta yo analizan nan varyab 60 00:03:46,520 --> 00:03:48,720 ki ofri pa moun kap rele a. 61 00:03:48,720 --> 00:03:53,570 Depi fonksyon yo opinyon konvèsyon fòma yo trè itil, lajman itilize fonksyon 62 00:03:53,570 --> 00:03:56,160 ki pa super entwisyon an premye, 63 00:03:56,160 --> 00:03:58,300 nou pral ale sou kijan sskanf travay. 64 00:03:58,300 --> 00:04:03,330 >> Agiman nan premye sskanf se yon * Char - yon konsèy nan yon karaktè. 65 00:04:03,330 --> 00:04:05,150 Pou fonksyon an yo travay byen, 66 00:04:05,150 --> 00:04:08,340 ki karaktè yo ta dwe karaktè an premye nan yon fisèl C, 67 00:04:08,340 --> 00:04:12,270 sispann ak nil \ pèsonaj la 0. 68 00:04:12,270 --> 00:04:15,120 Sa a se fisèl la analizan 69 00:04:15,120 --> 00:04:18,269 Agiman Dezyèm fwa w sskanf se yon fisèl fòma, 70 00:04:18,269 --> 00:04:20,839 tipikman ki te pase nan kòm yon konstan fisèl, 71 00:04:20,839 --> 00:04:24,040 epi ou ta ka te wè yon fisèl tankou sa a anvan lè w ap itilize printf. 72 00:04:24,040 --> 00:04:28,650 Yon siy pousan nan fisèl la fòma endike yon dvi konvèsyon. 73 00:04:28,650 --> 00:04:30,850 Pèsonaj la imedyatman apre yon siy pousan, 74 00:04:30,850 --> 00:04:35,430 endike kalite a C ke nou vle sskanf konvèti nan. 75 00:04:35,430 --> 00:04:40,090 Nan GetInt, ou wè ke gen yon d% ak yon c%. 76 00:04:40,090 --> 00:04:48,690 Sa vle di ke sskanf pral eseye yon int desimal - d la% - ak yon Char - c la%. 77 00:04:48,690 --> 00:04:51,510 Pou chak dvi konvèsyon nan fisèl la fòma, 78 00:04:51,510 --> 00:04:56,620 sskanf espere yon agiman korespondan pita nan lis agiman li yo. 79 00:04:56,620 --> 00:05:00,850 Sa agiman dwe lonje dwèt sou yon kote ki apwopriye tape 80 00:05:00,850 --> 00:05:04,000 nan ki nan magazen rezilta a nan konvèsyon an. 81 00:05:04,000 --> 00:05:08,910 >> Fason nòmal la an pou fè sa se kreye yon varyab sou chemine a anvan apèl la sskanf 82 00:05:08,910 --> 00:05:11,440 pou chak atik ke ou vle analizan soti nan fisèl la 83 00:05:11,440 --> 00:05:15,520 ak Lè sa a, sèvi ak operatè a adrès - comercial la - yo pase endikasyon 84 00:05:15,520 --> 00:05:19,100 bay moun varyab apèl la sskanf. 85 00:05:19,100 --> 00:05:22,720 Ou ka wè nan GetInt nou fè egzakteman sa. 86 00:05:22,720 --> 00:05:28,240 Dwa anvan apèl la sskanf, nou deklare yon int rele n ak yon c rele Char sou chemine a, 87 00:05:28,240 --> 00:05:32,340 epi nou pase endikasyon yo nan apèl la sskanf. 88 00:05:32,340 --> 00:05:35,800 Mete sa yo varyab sou chemine a gen plis pouvwa sou lè l sèvi avèk espas afekte 89 00:05:35,800 --> 00:05:39,350 sou pil wòch la ak malok, depi ou evite sou tèt la nan apèl la malok, 90 00:05:39,350 --> 00:05:43,060 epi ou pa gen enkyete sou koule memwa. 91 00:05:43,060 --> 00:05:47,280 Karaktè pa genyen prefiks pa yon siy pousan pa rapid konvèsyon. 92 00:05:47,280 --> 00:05:50,380 Olye de sa yo jis ajoute nan spesifikasyon la fòma. 93 00:05:50,380 --> 00:05:56,500 >> Pou egzanp, si fisèl la fòma nan GetInt te yon d% olye de sa, 94 00:05:56,500 --> 00:05:59,800 sskanf ta gade pou lèt la yon ki te swiv pa yon int, 95 00:05:59,800 --> 00:06:04,360 ak pandan ke li ta eseye konvèti int a, li pa ta fè nenpòt lòt bagay ki gen yon la. 96 00:06:04,360 --> 00:06:07,440 Sèl eksepsyon yo fè sa a se blan. 97 00:06:07,440 --> 00:06:11,030 Karaktè espas blan nan fisèl la fòma matche ak nenpòt kantite lajan nan blan - 98 00:06:11,030 --> 00:06:12,890 menm okenn nan tout. 99 00:06:12,890 --> 00:06:18,100 Se konsa, sa a, se poukisa kòmantè a mansyone posib ak dirijan ak / oswa fin blan. 100 00:06:18,100 --> 00:06:22,910 Se konsa, nan pwen sa a li sanble rele sskanf nou pral eseye analizan fisèl D 'itilizatè a nan 101 00:06:22,910 --> 00:06:25,380 lè w tcheke pou posib blan dirijan, 102 00:06:25,380 --> 00:06:29,300 swiv pa yon int ke yo pral konvèti ak ki estoke nan n nan varyab int 103 00:06:29,300 --> 00:06:33,090 ki te swiv pa kèk kantite lajan pou blan, ak ki te swiv pa yon karaktè 104 00:06:33,090 --> 00:06:35,810 ki estoke nan c a Char varyab. 105 00:06:35,810 --> 00:06:37,790 >> Ki sa ki sou valè a retounen? 106 00:06:37,790 --> 00:06:41,560 Sskanf pral analizan liy lan D 'Depi nan kòmansman fini, 107 00:06:41,560 --> 00:06:44,860 kanpe lè li rive nan fen an oswa lè yon karaktè nan D 'a 108 00:06:44,860 --> 00:06:49,320 pa matche ak yon karaktè fòma oswa lè li pa kapab fè yon konvèsyon. 109 00:06:49,320 --> 00:06:52,690 Se valè retounen li nan sèvi ak yon sèl lè li sispann. 110 00:06:52,690 --> 00:06:55,670 Si li sispann, paske li te rive jwenn nan fen fisèl la D ' 111 00:06:55,670 --> 00:07:00,630 anvan ou fè nenpòt konvèsyon ak devan li pap resevwa matche ak yon pati nan fisèl la fòma, 112 00:07:00,630 --> 00:07:04,840 Lè sa a, se espesyal èof a konstan retounen. 113 00:07:04,840 --> 00:07:08,200 Sinon, li retounen ki kantite konvèsyon siksè, 114 00:07:08,200 --> 00:07:14,380 ki ta ka 0, 1, oswa 2, depi nou te mande pou de konvèsyon. 115 00:07:14,380 --> 00:07:19,000 Nan ka nou an, nou vle asire w ke itilizatè a tape nan yon int epi sèlman int yon. 116 00:07:19,000 --> 00:07:23,370 >> Se konsa, nou vle sskanf retounen 1. Al gade nan poukisa? 117 00:07:23,370 --> 00:07:26,850 Si sskanf tounen 0, Lè sa a, pa gen okenn konvèsyon yo te fè a, 118 00:07:26,850 --> 00:07:31,690 Se konsa itilizatè a tape yon lòt bagay pase yon int nan kòmansman an nan opinyon an. 119 00:07:31,690 --> 00:07:37,100 Si sskanf retounen 2, Lè sa a, itilizatè a t 'byen tape l' nan nan kòmansman an nan opinyon an, 120 00:07:37,100 --> 00:07:41,390 men yo Lè sa a, tape nan kèk karaktè ki pa blan apre sa 121 00:07:41,390 --> 00:07:44,940 depi% nan c konvèsyon nan plas. 122 00:07:44,940 --> 00:07:49,570 Wow, sa se afè yon eksplikasyon long pou yon apèl fonksyon. 123 00:07:49,570 --> 00:07:53,460 Anyway, si ou vle plis enfòmasyon sou sskanf ak frè ak sè li yo, 124 00:07:53,460 --> 00:07:57,130 tcheke deyò paj yo moun, Google, oswa toude. 125 00:07:57,130 --> 00:07:58,780 Gen anpil bagay nan opsyon fisèl fòma, 126 00:07:58,780 --> 00:08:03,830 ak sa yo kapab sove ou yon anpil travay manyèl lè w ap eseye analizan strings nan C. 127 00:08:03,830 --> 00:08:07,180 >> Fonksyon an final nan bibliyotèk la fè yon gade nan se GetString. 128 00:08:07,180 --> 00:08:10,310 Li sanble ke GetString se yon fonksyon difisil yo ekri byen, 129 00:08:10,310 --> 00:08:14,290 menm si li sanble tankou tankou yon senp, travay komen. 130 00:08:14,290 --> 00:08:16,170 Poukisa se ka sa a la? 131 00:08:16,170 --> 00:08:21,380 Oke, kite la panse osijè de kòman nou pral nan magazen liy lan ki itilizatè a kalite pous 132 00:08:21,380 --> 00:08:23,880 Depi yon kòd se yon sekans nan charaktèr, 133 00:08:23,880 --> 00:08:26,430 nou ta ka vle kenbe l nan yon etalaj sou chemine a, 134 00:08:26,430 --> 00:08:31,250 men nou ta bezwen konnen konbyen tan etalaj la a pwal lè nou deklare li. 135 00:08:31,250 --> 00:08:34,030 Menm jan an tou, si nou vle mete l 'sou pil wòch la, 136 00:08:34,030 --> 00:08:38,090 nou bezwen pase malok ki kantite bytes nou vle rezèv, 137 00:08:38,090 --> 00:08:39,730 men sa a se enposib. 138 00:08:39,730 --> 00:08:42,760 Nou pa gen okenn lide ki jan anpil charaktèr itilizatè a ap tape nan 139 00:08:42,760 --> 00:08:46,590 anvan itilizatè a aktyèlman tape yo. 140 00:08:46,590 --> 00:08:50,720 >> Yon solisyon nayif pwoblèm sa a se jis rezève yon moso gwo nan espas, di, 141 00:08:50,720 --> 00:08:54,540 yon blòk nan 1000 charaktèr pou D 'itilizatè a la, 142 00:08:54,540 --> 00:08:57,980 an konsideran ke itilizatè a pa ta janm tape nan yon kòd ki long. 143 00:08:57,980 --> 00:09:00,810 Sa a se yon lide move pou de rezon ki fè. 144 00:09:00,810 --> 00:09:05,280 Premye, an konsideran ke itilizatè yo tipikman pa tape nan strings ki long, 145 00:09:05,280 --> 00:09:07,610 ou ta ka gaspiye yon anpil nan memwa. 146 00:09:07,610 --> 00:09:10,530 Sou machin modèn, sa a pa ta kapab yon pwoblèm si ou fè sa 147 00:09:10,530 --> 00:09:13,890 nan youn oubyen de sikonstans izole, 148 00:09:13,890 --> 00:09:17,630 Men, si ou ap pran opinyon itilizatè a nan yon riban epi estoke pou itilize pita, 149 00:09:17,630 --> 00:09:20,870 ou ka byen vit souse yon tòn a memwa. 150 00:09:20,870 --> 00:09:24,450 Anplis de sa, si pwogram nan w ap ekri a se pou yon òdinatè ki pi piti - 151 00:09:24,450 --> 00:09:28,100 yon aparèy tankou yon smartphone oubyen yon lòt bagay avèk memwa limite - 152 00:09:28,100 --> 00:09:32,060 sa a solisyon pral lakòz pwoblèm yon anpil pi vit. 153 00:09:32,060 --> 00:09:36,450 Dezyèm fwa, rezon ki fè yo pi grav yo pa fè sa a se ke li kite pwogram ou an vilnerab 154 00:09:36,450 --> 00:09:39,710 de sa ki te rele yon kriz debòde tanpon. 155 00:09:39,710 --> 00:09:45,840 Nan pwogram, yon zòn de defans se memwa itilize tanporèman magazen D 'oswa pwodiksyon done, 156 00:09:45,840 --> 00:09:48,980 ki nan ka sa a se blòk 1000-Char nou an. 157 00:09:48,980 --> 00:09:53,370 Yon debòde tanpon fèt lè done ki ekri nan Liv sot pase nan fen blòk an. 158 00:09:53,370 --> 00:09:57,790 >> Pou egzanp, si yon itilizatè aktyèlman fè sa ki kalite nan plis pase 1000 charaktèr. 159 00:09:57,790 --> 00:10:01,570 Ou ta ka fè eksperyans sa a aksidantèlman lè pwogramasyon ak ranje. 160 00:10:01,570 --> 00:10:05,620 Si ou gen yon etalaj la 10 antye, pa gen anyen arè ou nan ap eseye li ak ekri 161 00:10:05,620 --> 00:10:07,810 int la 15. 162 00:10:07,810 --> 00:10:10,000 Pa gen okenn avètisman du oswa erè. 163 00:10:10,000 --> 00:10:13,250 Pwogram nan jis ereur dwat devan ak jwenn aksè memwa a 164 00:10:13,250 --> 00:10:18,150 kote li panse int la 15 pral, ak sa a kapab recouvrir varyab lòt ou. 165 00:10:18,150 --> 00:10:22,040 Nan ka ki pi mal la, ou ka recouvrir kèk nan entèn pwogram ou an 166 00:10:22,040 --> 00:10:26,820 mekanism kontwòl, sa ki lakòz pwogram ou a aktyèlman egzekite enstriksyon diferan 167 00:10:26,820 --> 00:10:28,340 pase ou gen entansyon. 168 00:10:28,340 --> 00:10:31,360 >> Koulye a, li pa komen nan fè sa aksidantèlman, 169 00:10:31,360 --> 00:10:35,150 men sa a se yon teknik san patipri komen ki nèg move sèvi ak kraze pwogram 170 00:10:35,150 --> 00:10:39,080 epi li mete move kòd sou òdinatè lòt moun. 171 00:10:39,080 --> 00:10:42,910 Se poutèt sa, nou pa kapab jis itilize solisyon nayif nou an. 172 00:10:42,910 --> 00:10:45,590 Nou bezwen yon fason yo anpeche pwogram nou yo te soti nan vilnerab 173 00:10:45,590 --> 00:10:47,880 nan yon atak debòde tanpon. 174 00:10:47,880 --> 00:10:51,430 Pou fè sa, nou bezwen asire w ke zòn de defans nou ka grandi lè n ap li 175 00:10:51,430 --> 00:10:53,850 plis enfòmasyon nan men gwoup itilizatè a. 176 00:10:53,850 --> 00:10:57,440 Solisyon an? Nou itilize yon zòn de defans affecte pil wòch. 177 00:10:57,440 --> 00:10:59,950 Depi nou kapab Rdimansyone li lè l sèvi avèk rdimansyonman nan fonksyon an realloc, 178 00:10:59,950 --> 00:11:04,580 epi nou kenbe tras nan de nonb - endèks la nan plas nan pwochen vid nan zòn de defans la 179 00:11:04,580 --> 00:11:08,390 ak longè a oswa kapasite nan zòn de defans la. 180 00:11:08,390 --> 00:11:13,210 Nou li nan charaktèr soti nan itilizatè a yon sèl nan yon moman lè l sèvi avèk fonksyon an fgetc. 181 00:11:13,210 --> 00:11:19,360 Agiman a fonksyon an fgetc pran - stden - se yon referans a fisèl la opinyon estanda, 182 00:11:19,360 --> 00:11:23,810 ki se yon kanal D 'preconnected ke yo itilize yo transfere D' itilizatè a nan 183 00:11:23,810 --> 00:11:26,270 soti nan tèminal la nan pwogram nan. 184 00:11:26,270 --> 00:11:29,890 >> Chak fwa itilizatè a kalite nan yon karaktè nouvo, nou tcheke yo wè si endèks la 185 00:11:29,890 --> 00:11:35,810 nan pwochen plas la gratis plis 1 se pi gran pase kapasite a nan zòn de defans la. 186 00:11:35,810 --> 00:11:39,690 +1 La vini nan paske si endèks nan pwochen gratis se 5, 187 00:11:39,690 --> 00:11:44,150 Lè sa a, longè zòn de defans nou an dwe gen 6 gras a 0 Indexing. 188 00:11:44,150 --> 00:11:48,350 Si nou te kouri soti nan espas nan zòn de defans la, Lè sa a, nou eseye Rdimansyone li, 189 00:11:48,350 --> 00:11:51,690 double pwensip li pou nou koupe desann sou kantite fwa ke nou Rdimansyone 190 00:11:51,690 --> 00:11:54,760 si itilizatè a se tape nan yon fisèl reyèlman long. 191 00:11:54,760 --> 00:11:57,950 Si fisèl la vinn twò lontan oswa si nou kouri soti nan memwa pil wòch, 192 00:11:57,950 --> 00:12:01,350 nou libere tanpon nou yo ak nil retou. 193 00:12:01,350 --> 00:12:04,170 >> Finalman, nou ajoute Char nan zòn de defans la. 194 00:12:04,170 --> 00:12:08,200 Yon fwa frape yo itilizatè antre nan oswa retounen, signalisation yon liy nouvo, 195 00:12:08,200 --> 00:12:12,050 oswa espesyal Char - kontwòl d la - ki siyal yon fen nan opinyon, 196 00:12:12,050 --> 00:12:16,240 nou fè yon chèk yo wè si itilizatè a aktyèlman tape nan anyen nan tout. 197 00:12:16,240 --> 00:12:18,820 Si ou pa, nou retounen nil. 198 00:12:18,820 --> 00:12:22,280 Sinon, paske tanpon nou an, se pwobableman pi gwo pase nou bezwen, 199 00:12:22,280 --> 00:12:24,830 nan ka ki pi mal la li prèske de fwa ki gwo tankou nou bezwen 200 00:12:24,830 --> 00:12:27,830 depi nou double chak fwa nou Rdimansyone, 201 00:12:27,830 --> 00:12:31,840 nou fè yon kopi nouvo sou fisèl la lè l sèvi avèk jis kantite lajan an nan espas ke nou bezwen. 202 00:12:31,840 --> 00:12:34,220 Nou ajoute yon 1 siplemantè nan apèl la malok, 203 00:12:34,220 --> 00:12:37,810 pou ke gen nan espas pou espesyal karaktè nan Terminator nil - \ 0 a, 204 00:12:37,810 --> 00:12:41,990 ki nou kole fisèl la yon fwa nou kopi nan rès la nan karaktè yo, 205 00:12:41,990 --> 00:12:45,060 lè l sèvi avèk strki olye pou yo strki 206 00:12:45,060 --> 00:12:48,830 pou nou ka presize egzakteman kouman anpil charaktèr nou vle yon kopi. 207 00:12:48,830 --> 00:12:51,690 Strki kopi jiskaske li frape yon \ 0. 208 00:12:51,690 --> 00:12:55,740 Lè sa a, nou libere tanpon nou yo ak retounen kopi nan moun kap rele a. 209 00:12:55,740 --> 00:12:59,840 >> Ki moun ki te konnen te kapab tankou yon fonksyon senp-sanblans dwe tèlman konplike? 210 00:12:59,840 --> 00:13:02,820 Koulye a, ou konnen ki sa ki ale nan bibliyotèk la CS50. 211 00:13:02,820 --> 00:13:06,470 >> Non mwen se Nate Hardison, e sa se CS50. 212 00:13:06,470 --> 00:13:08,350 [CS50.TV]