Подсчёт слов в строке - C (СИ) (70519)

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

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

Составьте функцию wcount, вычисляющую количество слов в строке. Слово – это подстрока, не содержащая пробелов. Слова разделяются произвольным количеством пробелов. Кроме того, строка может начинаться и заканчиваться произвольным количеством пробелов. Объявление функции должно выглядеть как
int wcount(char *s) 
{ 
        // ... 
}
Итоговую программу, содержащую как функцию wcount, так и функцию main, демонстрирующую работоспособность функции wcount, нужно назвать wcount.c. Строка должна считываться из стандартного потока ввода с помощью функции gets.

Решение задачи: «Подсчёт слов в строке»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define DELIM " \t\n"
 
int wcount(char * s) {
    return ( strtok(s, DELIM) ) ? 1 + wcount(NULL) : 0;
}
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("%d word(s)\n", wcount(buf));
    
    return 0;
}

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

  1. Подключение необходимых библиотек для работы со строками и вводом-выводом
  2. Определение строки-разделителя DELIM, которая будет использоваться для разделения слов в строке
  3. Создание функции wcount, которая принимает указатель на строку и возвращает количество слов в этой строке
  4. Внутри функции используется функция strtok для поиска первого слова в строке. Если слово найдено, то рекурсивно вызывается функция wcount с аргументом NULL для поиска оставшихся слов. Если слово не найдено, то возвращается 0.
  5. В функции main создается буфер buf для считывания строки из стандартного ввода
  6. В цикле while считывается строка из стандартного ввода, выводится количество слов в этой строке с помощью функции wcount, а затем считывается следующая строка
  7. По завершении ввода возвращается 0, что означает успешный конец работы программы

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


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

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

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