1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> Spreker 1: Kom ons los dat dit die laaste program. 3 00:00:01,960 --> 00:00:04,920 En hierdie keer, laat ons uitdruklik ken sommige geheue waarin die 4 00:00:04,920 --> 00:00:06,550 gebruiker se insette sal gestoor word. 5 00:00:06,550 --> 00:00:09,600 Om dit te doen, laat ons slyp in op die eerste reël van die kode waar ons verklaar s 6 00:00:09,600 --> 00:00:11,590 voorheen 'n kar ster te wees. 7 00:00:11,590 --> 00:00:14,210 Hierdie tyd, laat ons weer verklaar dit soos volg: - 8 00:00:14,210 --> 00:00:19,380 kar se bracket 16, byvoorbeeld, naby bracket. 9 00:00:19,380 --> 00:00:23,690 >> Met ander woorde, laat verklaar is geen meer 'n adres van 'n karakter, 10 00:00:23,690 --> 00:00:26,610 maar eerder 'n skikking van 16 karakters. 11 00:00:26,610 --> 00:00:30,295 Op hierdie manier kan die gebruiker tik tot 15 karakters en nog ruimte laat vir 12 00:00:30,295 --> 00:00:31,570 'n nul Terminator. 13 00:00:31,570 --> 00:00:35,870 Kom ons gaan na spaar, saamstel, en Hierdie program. 14 00:00:35,870 --> 00:00:40,770 Maak scanf2 dot streep scanf2. 15 00:00:40,770 --> 00:00:45,100 Kom ons tik nou 'n string soos hallo, en ons bedank vir die hallo. 16 00:00:45,100 --> 00:00:46,440 >> Nou, daar is nog steeds 'n probleem. 17 00:00:46,440 --> 00:00:50,140 Ek het net getik hallo, wat slegs vyf karakters, plus 1 vir die nul 18 00:00:50,140 --> 00:00:50,445 Terminator. 19 00:00:50,445 --> 00:00:53,610 Dit laat ons met slegs 'n behoefte vir ses grepe. 20 00:00:53,610 --> 00:00:56,740 >> Maar helaas, ons net toegeken 16 in totaal. 21 00:00:56,740 --> 00:01:01,305 So as die gebruiker eintlik tipes in 16 karakters, of 17, of 'n paar honderd 22 00:01:01,305 --> 00:01:04,410 karakters, ons is nog steeds nie gaan genoeg ruimte in die geheue vir die 23 00:01:04,410 --> 00:01:05,400 gebruiker se insette. 24 00:01:05,400 --> 00:01:07,750 En in die feit, dit is wat om toevoer van die gebruiker so 25 00:01:07,750 --> 00:01:08,940 moeilik om in die algemeen. 26 00:01:08,940 --> 00:01:12,270 En inderdaad, dit is die rede waarom ons geïmplementeer die get string funksie in die eerste 27 00:01:12,270 --> 00:01:13,900 plek in die CS50 biblioteek - 28 00:01:13,900 --> 00:01:16,900 om uit te vind hoe om dié te hanteer situasies waar die gebruiker in 29 00:01:16,900 --> 00:01:19,710 meer karakters as wat ons aanvanklik verwag is. 30 00:01:19,710 --> 00:01:21,750 >> Om eerlik te wees, sonder heeltemal herskryf hierdie program, 31 00:01:21,750 --> 00:01:23,290 daar is geen skoon oplossing. 32 00:01:23,290 --> 00:01:26,970 Inteendeel, wat ons sou hê om te doen, is om 'n karakter van die gebruiker een op 'n 33 00:01:26,970 --> 00:01:28,860 tyd, weer en weer. 34 00:01:28,860 --> 00:01:32,510 En by elke punt as ons besef ons is geheue, sal ons moet op 35 00:01:32,510 --> 00:01:36,450 daardie punt terug te gaan in en toewys sommige meer geheue, kopieer die gebruiker se 36 00:01:36,450 --> 00:01:39,400 vorige insette van ons eerste stuk geheue in die nuwe, 37 00:01:39,400 --> 00:01:40,810 groter deel van die geheue. 38 00:01:40,810 --> 00:01:44,610 En dan weer herhaal dat die proses en weer totdat die gebruiker gedoen word voorsiening 39 00:01:44,610 --> 00:01:45,860 sy of haar insette. 40 00:01:45,860 --> 00:01:48,246