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