SPEAKER 1: Нека сега да се определи че последната програма. И този път, нека изрично разпредели някои памет, в която въвеждане на потребителя ще се съхранява. За да направите това, нека да усъвършенствате в по който първо линия на код, където ние декларирахме ите преди това да бъде знак звезда. Този път, нека отново декларира това, както следва - Чар и скоба 16, например, близо скоба. С други думи, нека да декларират и да не вече да бъде адрес на герой, а масив от 16 символа. По този начин, потребителят може да въведете до 15 символи и все още оставя място за нулев терминатор. Да продължите да се спестят, Compile, и стартирате тази програма. Направете scanf2 точка наклонена черта scanf2. Нека сега да въведете низ като здравей, и ние сме благодари за здрасти. Сега, все още има проблем. Написах само в здравей, която е само пет знака, плюс един за нула терминатор. Това ни оставя само с необходимо за шест байта. Но за съжаление, ние само разпределени общо 16. Така че, ако потребителят всъщност видове в 16 символи, или 17, или няколко стотин символи, ние все още не започваш да се има достатъчно място в паметта за вход за потребителя. И в действителност, това е, което прави получаване на приноса на потребителите, така че трудно като цяло. И наистина, това е защо ние въведохме низ функцията получите в първата място в CS50 библиотеката - да разбера как да се справят с тези ситуации, когато потребителят в повече знаци, отколкото ние първоначално се очакваше. Честно казано, без напълно да пренаписване на тази програма, там не е чисто решение. Напротив, това, което ние ще трябва да направите, е да получите символ от потребителското един в време, отново и отново. И във всяка точка, ако ние осъзнаваме, че сме на паметта, ние ще трябва да при този момент да се върна и да се преразпределят малко повече памет, копирайте потребителя предишния вход от първото ни парче на памет в новите, по-голямо парче от памет. И след това повторете този процес отново и отново, докато потребителят се извършва осигуряване неговото въвеждане.