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