>> SPEAKER 1: Poďme teraz opraviť že posledný program.
A tentoraz, poďme explicitne prideliť pamäť, v ktorej
vstup užívateľa budú uložené.
Ak chcete tak urobiť, poďme zamerať sa na to ako prvý riadok kódu, kde sme deklarované s
skôr sa char hviezda.
Tentoraz, poďme re-declare to takto -
char s držiak 16, napríklad, pravá zátvorka.
>> Inými slovami, poďme vyhlásiť s až nie už nebude adresa charakteru,
ale skôr pole 16 znakov.
Týmto spôsobom môže užívateľ zadať až 15 znaky a stále ponechávajú priestor pre
null terminátor.
Poďme pokračovať ušetriť, kompilácie, a Spustiť tento program.
Uistite sa scanf2 bodka lomítko scanf2.
Poďme sa teraz zadajte reťazec ako ahoj, a my poďakoval za pozdrav.
>> Teraz je tu ešte problém.
Len som napísal v ahoj, ktorá je len päť znakov, plus 1 na hodnotu null
terminátor.
Je nám zostáva len potreba šesť bajtov.
>> Ale bohužiaľ, len sme pridelené 16 celkom.
Takže v prípade, že používateľ skutočne druhy v 16. znaky, alebo 17, alebo niekoľko sto
znaky, my ešte nebude majú dostatok priestoru v pamäti
vstup užívateľa.
A v skutočnosti, to je to, čo robí získanie vstupu používateľa, aby
ťažké všeobecne.
A skutočne, to je dôvod, prečo sme zaviedli reťazec funkcie get v prvej
miesto v knižnici CS50 -
prísť na to, ako zaobchádzať s tými situácie, kedy užívateľ zadá
viac znakov, než sme sa pôvodne predpokladalo.
>> Úprimne povedané, bez toho, aby úplne prepisovanie tohto programu,
nie je čisté riešenie.
Skôr to, čo by sme mali urobiť, je dostať postava z užívateľského jedného na
čas, znovu a znovu.
A v každom okamihu, ak si uvedomíme, že sme z pamäte, museli by sme na
že bod ísť späť a prerozdeliť niektoré viac pamäte, skopírujte užívateľa
predchádzajúca vstup z nášho prvého bloku pamäte do novej,
väčší kus pamäti.
A potom tento proces opakovať znovu a , Kým užívateľ vykonáva poskytuje
jeho alebo jej vstup.