1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SIARADWR 1: Gadewch i ni yn awr atgyweiria y rhaglen diwethaf. 3 00:00:01,960 --> 00:00:04,920 A'r tro hwn, gadewch i ni ddyrannu yn benodol rhywfaint o cof y mae'r 4 00:00:04,920 --> 00:00:06,550 bydd mewnbwn y defnyddiwr yn cael ei storio. 5 00:00:06,550 --> 00:00:09,600 I wneud hynny, gadewch i ni hogi i mewn ar y cyntaf llinell o cod lle rydym yn datgan s 6 00:00:09,600 --> 00:00:11,590 flaenorol i fod yn seren torgoch. 7 00:00:11,590 --> 00:00:14,210 Y tro hwn, gadewch i ni ail-mynegwch fel a ganlyn - 8 00:00:14,210 --> 00:00:19,380 braced 16 torgoch s, er enghraifft, braced agos. 9 00:00:19,380 --> 00:00:23,690 >> Mewn geiriau eraill, gadewch i ni ddatgan i ni fod yn gyfeiriad cymeriad hwy, 10 00:00:23,690 --> 00:00:26,610 ond yn hytrach amrywiaeth o 16 nod. 11 00:00:26,610 --> 00:00:30,295 Fel hyn, gall y defnyddiwr deipio mewn hyd at 15 cymeriadau ac yn dal i adael lle ar gyfer 12 00:00:30,295 --> 00:00:31,570 yn terminator null. 13 00:00:31,570 --> 00:00:35,870 Gadewch i ni symud ymlaen i Arbed, Llunio, a Run rhaglen hon. 14 00:00:35,870 --> 00:00:40,770 Gwneud scanf2 scanf2 dot slaes. 15 00:00:40,770 --> 00:00:45,100 Gadewch i ni yn awr deipio llinyn fel helo, ac rydym yn diolch am y helo. 16 00:00:45,100 --> 00:00:46,440 >> Yn awr, mae dal i fod yn broblem. 17 00:00:46,440 --> 00:00:50,140 Dim ond teipio helo, sydd ond pum cymeriad, yn ogystal â 1 ar gyfer y null 18 00:00:50,140 --> 00:00:50,445 terminator. 19 00:00:50,445 --> 00:00:53,610 Mae'n ein gadael gyda dim ond angen am chwe bytes. 20 00:00:53,610 --> 00:00:56,740 >> Ond yn anffodus, dim ond ddyrannu 16 i gyd. 21 00:00:56,740 --> 00:01:01,305 Felly, os bydd y defnyddiwr mewn gwirionedd mathau mewn 16 cymeriadau, neu 17, neu sawl cant 22 00:01:01,305 --> 00:01:04,410 cymeriadau, nid ydym yn dal yn mynd i cael digon o le er cof am y 23 00:01:04,410 --> 00:01:05,400 mewnbwn defnyddiwr. 24 00:01:05,400 --> 00:01:07,750 Ac yn wir, mae hyn yn beth sy'n gwneud cael mewnbwn defnyddwyr, felly 25 00:01:07,750 --> 00:01:08,940 anodd yn gyffredinol. 26 00:01:08,940 --> 00:01:12,270 Ac yn wir, dyma pam ein rhoi ar waith y swyddogaeth llinyn get yn y lle cyntaf 27 00:01:12,270 --> 00:01:13,900 yn y llyfrgell CS50 - 28 00:01:13,900 --> 00:01:16,900 at chyfrif i maes sut i drin y rhai sefyllfaoedd lle y mathau o ddefnyddwyr yn 29 00:01:16,900 --> 00:01:19,710 mwy cymeriadau nag yr ydym Rhagwelir yn y lle cyntaf. 30 00:01:19,710 --> 00:01:21,750 >> A dweud y gwir, heb yn gyfan gwbl ailysgrifennu rhaglen hon, 31 00:01:21,750 --> 00:01:23,290 does dim ateb yn lân. 32 00:01:23,290 --> 00:01:26,970 Yn hytrach, yr hyn byddai'n rhaid i ni ei wneud yw cael cymeriad o'r defnyddiwr un ar y 33 00:01:26,970 --> 00:01:28,860 amser, dro ar ôl tro. 34 00:01:28,860 --> 00:01:32,510 Ac ar bob pwynt os ydym yn sylweddoli ein bod yn allan o gof, byddai'n rhaid i ni yn 35 00:01:32,510 --> 00:01:36,450 y pwynt hwnnw yn mynd yn ôl i mewn ac ailddyrannu mwy o gof, copïwch y defnyddiwr 36 00:01:36,450 --> 00:01:39,400 mewnbwn blaenorol gan ein darn cyntaf o gof i mewn i'r newydd, 37 00:01:39,400 --> 00:01:40,810 cyfran fwy o gof. 38 00:01:40,810 --> 00:01:44,610 Ac yna ailadrodd y broses honno eto ac eto nes bod y defnyddiwr yn cael ei wneud yn darparu 39 00:01:44,610 --> 00:01:45,860 ei gyfraniad. 40 00:01:45,860 --> 00:01:48,246