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 цхар с носач 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 Хајде да наставимо до Саве, компилации, и покренете овај програм. 14 00:00:35,870 --> 00:00:40,770 Направите сцанф2 тачка уписали косу сцанф2. 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 место у библиотеци ЦС50 - 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