>> Spreker 1: Kom ons los dat dit die laaste program.
En hierdie keer, laat ons uitdruklik ken sommige geheue waarin die
gebruiker se insette sal gestoor word.
Om dit te doen, laat ons slyp in op die eerste reël van die kode waar ons verklaar s
voorheen 'n kar ster te wees.
Hierdie tyd, laat ons weer verklaar dit soos volg: -
kar se bracket 16, byvoorbeeld, naby bracket.
>> Met ander woorde, laat verklaar is geen meer 'n adres van 'n karakter,
maar eerder 'n skikking van 16 karakters.
Op hierdie manier kan die gebruiker tik tot 15 karakters en nog ruimte laat vir
'n nul Terminator.
Kom ons gaan na spaar, saamstel, en Hierdie program.
Maak scanf2 dot streep scanf2.
Kom ons tik nou 'n string soos hallo, en ons bedank vir die hallo.
>> Nou, daar is nog steeds 'n probleem.
Ek het net getik hallo, wat slegs vyf karakters, plus 1 vir die nul
Terminator.
Dit laat ons met slegs 'n behoefte vir ses grepe.
>> Maar helaas, ons net toegeken 16 in totaal.
So as die gebruiker eintlik tipes in 16 karakters, of 17, of 'n paar honderd
karakters, ons is nog steeds nie gaan genoeg ruimte in die geheue vir die
gebruiker se insette.
En in die feit, dit is wat om toevoer van die gebruiker so
moeilik om in die algemeen.
En inderdaad, dit is die rede waarom ons geïmplementeer die get string funksie in die eerste
plek in die CS50 biblioteek -
om uit te vind hoe om dié te hanteer situasies waar die gebruiker in
meer karakters as wat ons aanvanklik verwag is.
>> Om eerlik te wees, sonder heeltemal herskryf hierdie program,
daar is geen skoon oplossing.
Inteendeel, wat ons sou hê om te doen, is om 'n karakter van die gebruiker een op 'n
tyd, weer en weer.
En by elke punt as ons besef ons is geheue, sal ons moet op
daardie punt terug te gaan in en toewys sommige meer geheue, kopieer die gebruiker se
vorige insette van ons eerste stuk geheue in die nuwe,
groter deel van die geheue.
En dan weer herhaal dat die proses en weer totdat die gebruiker gedoen word voorsiening
sy of haar insette.