Найти слово в текстовом файле по заданному шаблону - C (СИ)

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

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

Здравствуйте! Помогите пожалуйста... Умоляю!!! Уже несколько дней бьюсь над задачкой!

Нужно ввести слово, неизвестные буквы помечать _

*нижним подчеркиванием*

. Например:

ко_

И вывести все возможные слова с текстового файла. Например:

кот код

P.S. В текстовом файле каждое новое слово записано с новой строки. Наброски:
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, char* argv[])
  4. {
  5. char word[30], temp[30];
  6. system("chcp 1251 > nul");
  7. printf("Введите слово (неизвестные буквы обозначайте знаком подчеркивания _):\n");
  8. scanf_s("%s", &word, 30);
  9. //??????????????? Поиск слова в текстовом файле ??????????????
  10. FILE *f;
  11. f = fopen("words.txt", "r");
  12. if(f)
  13. {
  14. fclose(f);
  15. }
  16. //////////////////////////////////////////////////////////////////////////
  17. printf("Все возможные слова с вашим запросом (%s):\n", word);
  18. /*if(
  19. {
  20. //printf("%s", word)
  21. }*/

Решение задачи: «Найти слово в текстовом файле по заданному шаблону»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAXWORDSIZE 30
  5.  
  6. int match_template(const char* src, const char* tpl)
  7. {
  8.     for(; *src == *tpl || *tpl == '_'; src++, tpl++)
  9.     {
  10.         if(*src == '\0')
  11.             return 1;
  12.     }
  13.     return 0;
  14. }
  15.  
  16. int main()
  17. {
  18.     char buf[MAXWORDSIZE];
  19.     char word[MAXWORDSIZE];
  20.     size_t tsize;
  21.     FILE* fp;
  22.    
  23.     puts("Введите слово (неизвестные буквы обозначайте знаком подчеркивания _):");
  24.     scanf("%s", word);
  25.     tsize = strlen(word);
  26.    
  27.     fp = fopen("words.txt", "r");
  28.     printf("Все возможные слова с вашим запросом (%s):\n", word);
  29.     while(fscanf(fp, "%s", buf) > 0)
  30.     {
  31.         if(strlen(buf) != tsize)
  32.             continue;
  33.         if(match_template(buf, word))
  34.             puts(buf);
  35.     }
  36.     fclose(fp);
  37.     return 0;
  38. }

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

  1. Включаются необходимые заголовочные файлы
  2. Определяется максимальная длина слова в файле words.txt
  3. Функция match_template ищет соответствие шаблону в тексте
  4. В функции main считывается слово с помощью сканера
  5. Открывается файл words.txt для чтения
  6. Выводится запрос на ввод слова
  7. Считывается текст из файла words.txt и проверяется на соответствие шаблону
  8. Если слово соответствует шаблону, оно выводится на экран
  9. Файл words.txt закрывается
  10. Программа завершается

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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