Не считывает \0 - C (СИ)

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

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

while (fgets(str, N, fp) != NULL)
    {
        for (int i = 0; i < strlen(str); i++)
        {
            if (str[i] != ' ' && str[i] != '!' && str[i] != '?' && str[i] != '.' && str[i] != ',' && str[i] != '\n' && str[i] != '\0')
                counter++;
 
            else 
            {
                mass[counter - 1]++;
                counter = 0;
            }
        }
    }
Надо считать с файла строки и напечатать гистограмму длинн слов. Это я сделал, но есть проблема. Например, у меня есть одно слово в файле, не оканчивающееся прбелом или другим знаком препинания. Для этого я добавил
&& str[i] != '\0')
, чтоб видел окончание строки и записал counter символов этого слова. Однако он всё равно выдаёт counter = 0, если слово стоит одно в файле и не стоит знаков препинания или пробела.

Решение задачи: «Не считывает \0»

textual
Листинг программы
int max = strlen(str);
for (int i = 0; i < max; i++)

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


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

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

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