>> SPEAKER 1: Oletame nüüd määrata et viimane programm.
Ja seekord, lähme selgelt eraldada mõned mälu, milles
kasutaja sisend salvestatakse.
Selleks, lähme lihvida, et esimene koodirida kus me kuulutasime s
eelnevalt olema char star.
Seekord lähme uuesti deklareerima see järgmiselt -
paalia s osad 16, näiteks sulg.
>> Teisisõnu, olgem tunnistada s mitte enam aadressi iseloomu,
vaid rida 16 tähemärki.
Nii, kasutaja saab sisestada kuni 15 märgid ja jätab veel ruumi
null terminaator.
Lähme edasi säästa, koostada, ja kasutada seda programmi.
Tee scanf2 dot kaldkriipsuga scanf2.
Olgem nüüd kirjuta string nagu tere, ja me tänas tere.
>> Nüüd, seal on veel probleem.
Ma ainult kirjutada tere, mis on ainult viis märki, pluss 1 null
terminaator.
See jätab meile ainult vajadus kuue baiti.
>> Aga kahjuks ainult eraldatud 16 kokku.
Nii et kui kasutaja tegelikult liigid 16 märki või 17, või mitusada
tegelased, et me ikka ei hakka on piisavalt ruumi mälus
kasutaja sisend.
Ja tegelikult, see teebki saada kasutaja sisend nii
raske.
Ja tõepoolest, see on põhjus, miks me ellu get string funktsioon esimeses
koht CS50 raamatukogu -
nuputada, kuidas käsitleda neid olukordades, kus kasutaja liigid
rohkem märke kui me esialgu arvati.
>> Ausalt, ilma täielikult ümberkirjutamist käesoleva programmi
pole puhas lahendus.
Pigem me peame tegema, on saada tegelasele kasutaja ükshaaval
aeg, ikka ja jälle.
Ja igas punktis, kui me mõistame, et me oleme mälu, oleks meil juures
Sel hetkel tagasi minna ja ümber mõned rohkem mälu, kopeerida kasutaja
eelmine sisend meie esimese tüki Mälu, uus,
suurema tüki mälu.
Ja korrake seda protsessi uuesti ja uuesti, kuni kasutaja on teinud pakkuda
tema panus.