ВОПРОС: Что не так с этим примером кода, что отсутствует?
Текущий неверный вывод:
В ""
есть 0 слов
Код Объяснение: Напишите программу, которая читает строку текста и печатает количество слов в этой строке текста.Слово содержит буквенно-цифровые символы.Подсказка: используйте функцию fgets ().
Пример выполнения:
Вход: отсюда в вечность Выход: 4
Ввод: начните здесь и поверните на 180 градусов Ввод: 6
Фрагмент кода: https://onlinegdb.com/H1rBwB83V
#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#include <string.h>
#define MAXLEN 100
int countWords(char str[])
{
int i=0;
int count = 0;
bool flag = false;
while (str[i] != '\0')
{
if (isalnum(str[i]))
{
if (!flag)
{
count++;
flag = true;
}
}
else
flag = false;
i++;
}
return count;
}
int main(int argc, char **argv) {
char str[MAXLEN];
int count;
while (fgets(str, sizeof(str), stdin) != NULL)
{
str[strlen(str-1)] = '\0'; // the last character is the newline. replace with null
count = countWords(str);
printf("There are %d words in \"%s\"\n", count, str);
}
return 0;
}
Аналогичный учебник: https://www.sanfoundry.com/c-program-count-words-in-sentence/