1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 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 Да продължите да се спестят, Compile, и стартирате тази програма. 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 Написах само в здравей, която е само пет знака, плюс един за нула 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