Вывести на печать список слов, имеющих заданную приставку - C (СИ)
Формулировка задачи:
Вывести на печать список слов, имеющих приставку (несколько букв), задаваемую с терминала.
Решение задачи: «Вывести на печать список слов, имеющих заданную приставку»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <locale.h> #define N 256 #define D " ,.!?:;" int main(void) { setlocale(LC_ALL,"RU"); char a[N]="приходи ко мне на приём, получиш приказ!"; char b[5]=""; int j,l; char *p,*c,*s; s=b; printf("Введите приставку: "); fgets(b,5,stdin); l=strlen(b)-1; for(p=strtok(a,D);p;p=strtok(NULL,D)) { c=p; for(j=0;b[j]!='\n';j++) if(b[j]==*c++)continue;else break; if(j==l)printf("%s\n",p); } return (0); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Установка значения N для определения максимального количества символов в массиве.
- Установка значения D для определения разделителя, в данном случае пробел, точка, запятая, восклицательный и вопросительный знаки.
- Инициализация пустой строки b для считывания пользовательского ввода.
- Объявление переменных j и l для подсчета количества символов в строке b и строке a соответственно.
- Объявление указателей p, c и s для работы со строками a и b.
- Установка значения s=b для переменной s.
- Вывод сообщения с просьбой ввести приставку и считывание ввода с помощью функции fgets().
- Вычисление значения l как strlen(b)-1 для определения длины строки b, уменьшенной на 1, так как функция fgets() добавляет символ новой строки в конец строки.
- Использование цикла for и функции strtok() для разделения строки a на отдельные слова, используя разделитель D.
- Внутри цикла for, инициализация переменной c как p для работы с текущим словом.
- Использование цикла for для сравнения каждого символа в слове b с символами текущего слова, если символы совпадают, то пропустить текущий символ, иначе прервать цикл.
- Если цикл j не был прерван, то это означает, что текущее слово не соответствует введенному пользователем шаблону, поэтому его можно игнорировать.
- Если цикл j был прерван, то это означает, что текущее слово соответствует введенному пользователем шаблону, поэтому его можно вывести на экран.
- Завершение функции main() и возврат значения 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д