Вывести на печать список слов, имеющих заданную приставку - 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);
}

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

  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
Похожие ответы