1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> Выступоўца 1: Давайце цяпер выправіць што апошняя праграма. 3 00:00:01,960 --> 00:00:04,920 І на гэты раз, давайце выразна вылучыць частка памяці, у якой 4 00:00:04,920 --> 00:00:06,550 ўваход карыстальніка будзе захоўвацца. 5 00:00:06,550 --> 00:00:09,600 Каб зрабіць гэта, давайце адточваюць на што ў першую радок кода, дзе мы абвясцілі сек 6 00:00:09,600 --> 00:00:11,590 раней, каб быць знак зоркі. 7 00:00:11,590 --> 00:00:14,210 На гэты раз, давайце паўторна абвесьціць гэта наступным чынам - 8 00:00:14,210 --> 00:00:19,380 сімвал S кранштэйны 16, напрыклад, якая зачыняе дужка. 9 00:00:19,380 --> 00:00:23,690 >> Іншымі словамі, давайце не абвясціць з да ня больш быць адрас, па сваім характары, 10 00:00:23,690 --> 00:00:26,610 а масіў з 16 знакаў. 11 00:00:26,610 --> 00:00:30,295 Такім чынам, карыстальнік можа ўвесці да 15 знакаў і пакінуць месца для 12 00:00:30,295 --> 00:00:31,570 нулявы тэрмінатар. 13 00:00:31,570 --> 00:00:35,870 Пяройдзем да Save, кампіляцыі, і Запусціць праграму. 14 00:00:35,870 --> 00:00:40,770 Зрабіць scanf2 кропка слэш scanf2. 15 00:00:40,770 --> 00:00:45,100 Давайце зараз увядзіце радок, як прывітанне, і мы падзякаваў за прывітанне. 16 00:00:45,100 --> 00:00:46,440 >> Зараз, ёсць яшчэ праблема. 17 00:00:46,440 --> 00:00:50,140 Я толькі набраў ў прывітанне, які знаходзіцца ўсяго ў пяць знакаў, плюс 1 для нулявы 18 00:00:50,140 --> 00:00:50,445 тэрмінатар. 19 00:00:50,445 --> 00:00:53,610 Гэта пакідае нас з толькі патрэба ў шэсць байтаў. 20 00:00:53,610 --> 00:00:56,740 >> Але, на жаль, мы толькі выдзелена 16 у агульнай складанасці. 21 00:00:56,740 --> 00:01:01,305 Так што, калі на самай справе карыстальнікам тыпы ў 16 знакаў, або 17, або некалькі сотняў 22 00:01:01,305 --> 00:01:04,410 сімвалы, мы ўсё яшчэ не збіраецца ёсць досыць месцы ў памяці для 23 00:01:04,410 --> 00:01:05,400 ўваход карыстальніка. 24 00:01:05,400 --> 00:01:07,750 І на самай справе, гэта тое, што робіць атрымліваць карыстацкі ўвод так 25 00:01:07,750 --> 00:01:08,940 цяжка наогул. 26 00:01:08,940 --> 00:01:12,270 І сапраўды, менавіта таму мы ўкаранілі функцыя радок трапіць у першую 27 00:01:12,270 --> 00:01:13,900 месца ў бібліятэцы CS50 - 28 00:01:13,900 --> 00:01:16,900 каб высветліць, як звяртацца з тымі, сітуацыі, калі карыстальнік ўводзіць у 29 00:01:16,900 --> 00:01:19,710 больш сімвалаў, чым мы першапачаткова меркавалася. 30 00:01:19,710 --> 00:01:21,750 >> Шчыра кажучы, без поўнага перапісвання гэтую праграму, 31 00:01:21,750 --> 00:01:23,290 няма чыстае рашэнне. 32 00:01:23,290 --> 00:01:26,970 Хутчэй, мы павінны былі б зрабіць, гэта атрымаць персанаж з карыстацкага адзін у 33 00:01:26,970 --> 00:01:28,860 Час, зноў і зноў. 34 00:01:28,860 --> 00:01:32,510 І ў кожнай кропцы, калі мы разумеем, што мы з памяці, мы павінны былі б у 35 00:01:32,510 --> 00:01:36,450 што кропка вярнуцца і пераразмеркаваць яшчэ крыху памяці, скапіруйце карыстальніка 36 00:01:36,450 --> 00:01:39,400 папярэдняя ўваход з нашага першага фрагмента памяці ў новы, 37 00:01:39,400 --> 00:01:40,810 больш кавалак памяці. 38 00:01:40,810 --> 00:01:44,610 А потым паўтарыць гэты працэс зноў і зноў, пакуль карыстач не робіцца забеспячэнне 39 00:01:44,610 --> 00:01:45,860 яго ці яе ўвод. 40 00:01:45,860 --> 00:01:48,246