Напечатать все слова из предложения, содержащие более 6 букв - C (СИ)
Формулировка задачи:
Решение задачи: «Напечатать все слова из предложения, содержащие более 6 букв»
#include <iostream> #include <string.h> const char* next_word(const char* s, const char** e, int n){ const char* i, *p; const char delim[] = " \t\n,.!?"; for(p = NULL; *s; s = p){ while(*s && (strchr(delim, *s) != NULL)) ++s; if((p = strpbrk(s, delim)) == NULL){ for(i = s; *i; ++i); p = i; } if((int)(p - s) >= n){ *e = p; return s; } } return NULL; } int main(void){ const char* p, *e; char s[] = "PASCAL, LISP, SNOBOL. FORTRAN"; p = &s[0]; while((p = next_word(p, &e, 6)) != NULL){ while(p != e) putchar(*p++); putchar('\n'); } return 0; }
Объяснение кода листинга программы
В этом коде реализована функция next_word
, которая принимает три аргумента типа const char*
и целое число. Первые два аргумента - это указатель на строку и указатель на следующую позицию в этой строке (указатель на первую непечатаемую симво в слове), третий аргумент - максимальная длина слова.
Функция next_word
ищет следующее слово в строке, длина которого не превышает n
. Если такое слово найдено, то функция возвращает указатель на первую позицию этого слова, иначе возвращает NULL
.
В функции main
создается строка s
с несколькими словами. Затем, используя функцию next_word
, мы ищем слова в этой строке, длина которых больше 6 символов. Когда мы находим такое слово, мы печатаем его на экране, затем переходим к следующему слову с помощью p = next_word(p, &e, 6)
. Когда мы доходим до конца строки, функция main
возвращает 0
, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д