1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Poďme teraz opraviť že posledný program. 3 00:00:01,960 --> 00:00:04,920 A tentoraz, poďme explicitne prideliť pamäť, v ktorej 4 00:00:04,920 --> 00:00:06,550 vstup užívateľa budú uložené. 5 00:00:06,550 --> 00:00:09,600 Ak chcete tak urobiť, poďme zamerať sa na to ako prvý riadok kódu, kde sme deklarované s 6 00:00:09,600 --> 00:00:11,590 skôr sa char hviezda. 7 00:00:11,590 --> 00:00:14,210 Tentoraz, poďme re-declare to takto - 8 00:00:14,210 --> 00:00:19,380 char s držiak 16, napríklad, pravá zátvorka. 9 00:00:19,380 --> 00:00:23,690 >> Inými slovami, poďme vyhlásiť s až nie už nebude adresa charakteru, 10 00:00:23,690 --> 00:00:26,610 ale skôr pole 16 znakov. 11 00:00:26,610 --> 00:00:30,295 Týmto spôsobom môže užívateľ zadať až 15 znaky a stále ponechávajú priestor pre 12 00:00:30,295 --> 00:00:31,570 null terminátor. 13 00:00:31,570 --> 00:00:35,870 Poďme pokračovať ušetriť, kompilácie, a Spustiť tento program. 14 00:00:35,870 --> 00:00:40,770 Uistite sa scanf2 bodka lomítko scanf2. 15 00:00:40,770 --> 00:00:45,100 Poďme sa teraz zadajte reťazec ako ahoj, a my poďakoval za pozdrav. 16 00:00:45,100 --> 00:00:46,440 >> Teraz je tu ešte problém. 17 00:00:46,440 --> 00:00:50,140 Len som napísal v ahoj, ktorá je len päť znakov, plus 1 na hodnotu null 18 00:00:50,140 --> 00:00:50,445 terminátor. 19 00:00:50,445 --> 00:00:53,610 Je nám zostáva len potreba šesť bajtov. 20 00:00:53,610 --> 00:00:56,740 >> Ale bohužiaľ, len sme pridelené 16 celkom. 21 00:00:56,740 --> 00:01:01,305 Takže v prípade, že používateľ skutočne druhy v 16. znaky, alebo 17, alebo niekoľko sto 22 00:01:01,305 --> 00:01:04,410 znaky, my ešte nebude majú dostatok priestoru v pamäti 23 00:01:04,410 --> 00:01:05,400 vstup užívateľa. 24 00:01:05,400 --> 00:01:07,750 A v skutočnosti, to je to, čo robí získanie vstupu používateľa, aby 25 00:01:07,750 --> 00:01:08,940 ťažké všeobecne. 26 00:01:08,940 --> 00:01:12,270 A skutočne, to je dôvod, prečo sme zaviedli reťazec funkcie get v prvej 27 00:01:12,270 --> 00:01:13,900 miesto v knižnici CS50 - 28 00:01:13,900 --> 00:01:16,900 prísť na to, ako zaobchádzať s tými situácie, kedy užívateľ zadá 29 00:01:16,900 --> 00:01:19,710 viac znakov, než sme sa pôvodne predpokladalo. 30 00:01:19,710 --> 00:01:21,750 >> Úprimne povedané, bez toho, aby úplne prepisovanie tohto programu, 31 00:01:21,750 --> 00:01:23,290 nie je čisté riešenie. 32 00:01:23,290 --> 00:01:26,970 Skôr to, čo by sme mali urobiť, je dostať postava z užívateľského jedného na 33 00:01:26,970 --> 00:01:28,860 čas, znovu a znovu. 34 00:01:28,860 --> 00:01:32,510 A v každom okamihu, ak si uvedomíme, že sme z pamäte, museli by sme na 35 00:01:32,510 --> 00:01:36,450 že bod ísť späť a prerozdeliť niektoré viac pamäte, skopírujte užívateľa 36 00:01:36,450 --> 00:01:39,400 predchádzajúca vstup z nášho prvého bloku pamäte do novej, 37 00:01:39,400 --> 00:01:40,810 väčší kus pamäti. 38 00:01:40,810 --> 00:01:44,610 A potom tento proces opakovať znovu a , Kým užívateľ vykonáva poskytuje 39 00:01:44,610 --> 00:01:45,860 jeho alebo jej vstup. 40 00:01:45,860 --> 00:01:48,246