Затруднение при применении функции fgets - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Для того, чтобы считать имя файла и не выдалась ошибка при его открытии, мне пришлось применить следующую конструкцию:
printf("Введите имя файла-источника\n");
fgets(name_in, MAX, stdin);
name_in[strlen(name_in+1)] = '\0';
Если я применяю gets, Почему мне необходимо добавить нулевой символ для того, чтобы файл прочитался? Если же я пользуюсь ничего не добавляющей в конец массива функцией gets для чтения имени файла, программа работает исправно. Почему так получается? Также, интересует, по какой причине я не могу написать вот так:
name_in[strlen(name_in)+1] = '\0';
Насколько я знаю, арифметические операции применимы внутри квадратных скобок массивов.

Решение задачи: «Затруднение при применении функции fgets»

textual
Листинг программы
name_in[strlen(name_in) - 1] = '\0';

Объяснение кода листинга программы

  1. Сначала вводится строка с именем файла, используя функцию fgets.
  2. Затем вычисляется длина строки имени файла без учета символа новой строки, используя функцию strlen.
  3. Обнуляется последний символ строки, чтобы убрать символ новой строки, используя оператор индексации и присваивания.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы