>> Выступоўца 1: Давайце цяпер выправіць што апошняя праграма.
І на гэты раз, давайце выразна вылучыць частка памяці, у якой
ўваход карыстальніка будзе захоўвацца.
Каб зрабіць гэта, давайце адточваюць на што ў першую радок кода, дзе мы абвясцілі сек
раней, каб быць знак зоркі.
На гэты раз, давайце паўторна абвесьціць гэта наступным чынам -
сімвал S кранштэйны 16, напрыклад, якая зачыняе дужка.
>> Іншымі словамі, давайце не абвясціць з да ня больш быць адрас, па сваім характары,
а масіў з 16 знакаў.
Такім чынам, карыстальнік можа ўвесці да 15 знакаў і пакінуць месца для
нулявы тэрмінатар.
Пяройдзем да Save, кампіляцыі, і Запусціць праграму.
Зрабіць scanf2 кропка слэш scanf2.
Давайце зараз увядзіце радок, як прывітанне, і мы падзякаваў за прывітанне.
>> Зараз, ёсць яшчэ праблема.
Я толькі набраў ў прывітанне, які знаходзіцца ўсяго ў пяць знакаў, плюс 1 для нулявы
тэрмінатар.
Гэта пакідае нас з толькі патрэба ў шэсць байтаў.
>> Але, на жаль, мы толькі выдзелена 16 у агульнай складанасці.
Так што, калі на самай справе карыстальнікам тыпы ў 16 знакаў, або 17, або некалькі сотняў
сімвалы, мы ўсё яшчэ не збіраецца ёсць досыць месцы ў памяці для
ўваход карыстальніка.
І на самай справе, гэта тое, што робіць атрымліваць карыстацкі ўвод так
цяжка наогул.
І сапраўды, менавіта таму мы ўкаранілі функцыя радок трапіць у першую
месца ў бібліятэцы CS50 -
каб высветліць, як звяртацца з тымі, сітуацыі, калі карыстальнік ўводзіць у
больш сімвалаў, чым мы першапачаткова меркавалася.
>> Шчыра кажучы, без поўнага перапісвання гэтую праграму,
няма чыстае рашэнне.
Хутчэй, мы павінны былі б зрабіць, гэта атрымаць персанаж з карыстацкага адзін у
Час, зноў і зноў.
І ў кожнай кропцы, калі мы разумеем, што мы з памяці, мы павінны былі б у
што кропка вярнуцца і пераразмеркаваць яшчэ крыху памяці, скапіруйце карыстальніка
папярэдняя ўваход з нашага першага фрагмента памяці ў новы,
больш кавалак памяці.
А потым паўтарыць гэты працэс зноў і зноў, пакуль карыстач не робіцца забеспячэнне
яго ці яе ўвод.