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