Подсчёт слов в строке - C (СИ) (70519)
Формулировка задачи:
Составьте функцию wcount, вычисляющую количество слов в строке. Слово – это подстрока, не содержащая пробелов. Слова разделяются произвольным количеством пробелов. Кроме того, строка может начинаться и заканчиваться произвольным количеством пробелов. Объявление функции должно выглядеть как
Итоговую программу, содержащую как функцию wcount, так и функцию main, демонстрирующую работоспособность функции wcount, нужно назвать wcount.c. Строка должна считываться из стандартного потока ввода с помощью функции gets.
int wcount(char *s) { // ... }
Решение задачи: «Подсчёт слов в строке»
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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и вводом-выводом
- Определение строки-разделителя DELIM, которая будет использоваться для разделения слов в строке
- Создание функции wcount, которая принимает указатель на строку и возвращает количество слов в этой строке
- Внутри функции используется функция strtok для поиска первого слова в строке. Если слово найдено, то рекурсивно вызывается функция wcount с аргументом NULL для поиска оставшихся слов. Если слово не найдено, то возвращается 0.
- В функции main создается буфер buf для считывания строки из стандартного ввода
- В цикле while считывается строка из стандартного ввода, выводится количество слов в этой строке с помощью функции wcount, а затем считывается следующая строка
- По завершении ввода возвращается 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д