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.