Konstantin18ko
@Konstantin18ko
Стоматолог

Что означает эта строка? Ее предназначение?

261913937e41423a866425ef7c4de6ab.jpg

Единственное что я понял, массив search_for равен количеству введеных символов -1 (допустим "зеленый" т.е. 7 - 1 = 6 [делается из-за того что индексация массива начинается с 0, а не с 1]). И в значение последнего индекса вносим '\0'.

Зачем его вносить?
Его роль?
  • Вопрос задан
  • 370 просмотров
Пригласить эксперта
Ответы на вопрос 3
alsopub
@alsopub
В массив search_for сначала считывается введенная пользователем строка, заканчивающаяся на "Enter" (0x10), затем этот символ Enter заменяется на 0x00, что в C является признаком конца строки.
То есть после fgets в массиве у нас находится введенная строка, перевод строки, \0.
После указанной строки в массиве остается введенная строка, \0, \0 (второй "ноль" уже нагрузки не несет).
Ответ написан
Комментировать
Serpentiel
@Serpentiel
Полное объяснение значения "нуль-терминированной строки" вы можете найти здесь Нуль-терминированная строка, но вкратце скажу, что в C-подобных языках это является признаком завершения строки.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Операция с присваиванием 0 именно в такой форме тут совершенно лишняя, т.к. fgets на предыдущем шаге и так уже записала 0 в конце строки. Если бы этого не было, то strlen не смогла бы вычислить корректную длину строки.
Я бы еще понял что-то подобное: search_for[79]=0; - подстраховка от переполнения буфера, хотя и это излишне, если понадеяться на корректную работу fgets. Но ведь, скорее всего, мы не будем проверять каждую реализацию fgets, поэтому такой оператор кажется более логичным, чем тот что приведен в примере.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы