Вывести на печать список слов, имеющих заданную приставку - C (СИ)

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

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

Вывести на печать список слов, имеющих приставку (несколько букв), задаваемую с терминала.

Решение задачи: «Вывести на печать список слов, имеющих заданную приставку»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale.h>
  4. #define N 256
  5. #define D " ,.!?:;"
  6. int main(void)
  7. {
  8.   setlocale(LC_ALL,"RU");
  9.   char a[N]="приходи ко мне на приём, получиш приказ!";
  10.   char b[5]="";
  11.   int j,l;
  12.   char *p,*c,*s;
  13.   s=b;
  14.   printf("Введите приставку: ");
  15.   fgets(b,5,stdin);
  16.   l=strlen(b)-1;
  17.   for(p=strtok(a,D);p;p=strtok(NULL,D))
  18.   {
  19.     c=p;
  20.     for(j=0;b[j]!='\n';j++)
  21.     if(b[j]==*c++)continue;else break;
  22.     if(j==l)printf("%s\n",p);
  23.   }
  24.  return (0);
  25. }

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

  1. Подключение необходимых библиотек для работы с файлами и строками.
  2. Установка значения N для определения максимального количества символов в массиве.
  3. Установка значения D для определения разделителя, в данном случае пробел, точка, запятая, восклицательный и вопросительный знаки.
  4. Инициализация пустой строки b для считывания пользовательского ввода.
  5. Объявление переменных j и l для подсчета количества символов в строке b и строке a соответственно.
  6. Объявление указателей p, c и s для работы со строками a и b.
  7. Установка значения s=b для переменной s.
  8. Вывод сообщения с просьбой ввести приставку и считывание ввода с помощью функции fgets().
  9. Вычисление значения l как strlen(b)-1 для определения длины строки b, уменьшенной на 1, так как функция fgets() добавляет символ новой строки в конец строки.
  10. Использование цикла for и функции strtok() для разделения строки a на отдельные слова, используя разделитель D.
  11. Внутри цикла for, инициализация переменной c как p для работы с текущим словом.
  12. Использование цикла for для сравнения каждого символа в слове b с символами текущего слова, если символы совпадают, то пропустить текущий символ, иначе прервать цикл.
  13. Если цикл j не был прерван, то это означает, что текущее слово не соответствует введенному пользователем шаблону, поэтому его можно игнорировать.
  14. Если цикл j был прерван, то это означает, что текущее слово соответствует введенному пользователем шаблону, поэтому его можно вывести на экран.
  15. Завершение функции main() и возврат значения 0, что означает успешное выполнение программы.

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


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

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

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы