1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Oletame nüüd määrata et viimane programm. 3 00:00:01,960 --> 00:00:04,920 Ja seekord, lähme selgelt eraldada mõned mälu, milles 4 00:00:04,920 --> 00:00:06,550 kasutaja sisend salvestatakse. 5 00:00:06,550 --> 00:00:09,600 Selleks, lähme lihvida, et esimene koodirida kus me kuulutasime s 6 00:00:09,600 --> 00:00:11,590 eelnevalt olema char star. 7 00:00:11,590 --> 00:00:14,210 Seekord lähme uuesti deklareerima see järgmiselt - 8 00:00:14,210 --> 00:00:19,380 paalia s osad 16, näiteks sulg. 9 00:00:19,380 --> 00:00:23,690 >> Teisisõnu, olgem tunnistada s mitte enam aadressi iseloomu, 10 00:00:23,690 --> 00:00:26,610 vaid rida 16 tähemärki. 11 00:00:26,610 --> 00:00:30,295 Nii, kasutaja saab sisestada kuni 15 märgid ja jätab veel ruumi 12 00:00:30,295 --> 00:00:31,570 null terminaator. 13 00:00:31,570 --> 00:00:35,870 Lähme edasi säästa, koostada, ja kasutada seda programmi. 14 00:00:35,870 --> 00:00:40,770 Tee scanf2 dot kaldkriipsuga scanf2. 15 00:00:40,770 --> 00:00:45,100 Olgem nüüd kirjuta string nagu tere, ja me tänas tere. 16 00:00:45,100 --> 00:00:46,440 >> Nüüd, seal on veel probleem. 17 00:00:46,440 --> 00:00:50,140 Ma ainult kirjutada tere, mis on ainult viis märki, pluss 1 null 18 00:00:50,140 --> 00:00:50,445 terminaator. 19 00:00:50,445 --> 00:00:53,610 See jätab meile ainult vajadus kuue baiti. 20 00:00:53,610 --> 00:00:56,740 >> Aga kahjuks ainult eraldatud 16 kokku. 21 00:00:56,740 --> 00:01:01,305 Nii et kui kasutaja tegelikult liigid 16 märki või 17, või mitusada 22 00:01:01,305 --> 00:01:04,410 tegelased, et me ikka ei hakka on piisavalt ruumi mälus 23 00:01:04,410 --> 00:01:05,400 kasutaja sisend. 24 00:01:05,400 --> 00:01:07,750 Ja tegelikult, see teebki saada kasutaja sisend nii 25 00:01:07,750 --> 00:01:08,940 raske. 26 00:01:08,940 --> 00:01:12,270 Ja tõepoolest, see on põhjus, miks me ellu get string funktsioon esimeses 27 00:01:12,270 --> 00:01:13,900 koht CS50 raamatukogu - 28 00:01:13,900 --> 00:01:16,900 nuputada, kuidas käsitleda neid olukordades, kus kasutaja liigid 29 00:01:16,900 --> 00:01:19,710 rohkem märke kui me esialgu arvati. 30 00:01:19,710 --> 00:01:21,750 >> Ausalt, ilma täielikult ümberkirjutamist käesoleva programmi 31 00:01:21,750 --> 00:01:23,290 pole puhas lahendus. 32 00:01:23,290 --> 00:01:26,970 Pigem me peame tegema, on saada tegelasele kasutaja ükshaaval 33 00:01:26,970 --> 00:01:28,860 aeg, ikka ja jälle. 34 00:01:28,860 --> 00:01:32,510 Ja igas punktis, kui me mõistame, et me oleme mälu, oleks meil juures 35 00:01:32,510 --> 00:01:36,450 Sel hetkel tagasi minna ja ümber mõned rohkem mälu, kopeerida kasutaja 36 00:01:36,450 --> 00:01:39,400 eelmine sisend meie esimese tüki Mälu, uus, 37 00:01:39,400 --> 00:01:40,810 suurema tüki mälu. 38 00:01:40,810 --> 00:01:44,610 Ja korrake seda protsessi uuesti ja uuesti, kuni kasutaja on teinud pakkuda 39 00:01:44,610 --> 00:01:45,860 tema panus. 40 00:01:45,860 --> 00:01:48,246