Поиск подстроки в файле - C (СИ) (77123)

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

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

вводная: получаем строку динамической длины в буфер задачка: скопировать в (пускай будет файл) все, что будет между 2 точками совпадения. для примера. есть строка цуываываыва%$ sdfsdfsdfsdfsdfsdf&* sdfsdfsdfsdf %$sdfsdfsdfsdfsdf sdf &*sdfsdfsdfsdf нужно получить куски текста, что находятся между %$.......&*. Остальное в /dev/null

Решение задачи: «Поиск подстроки в файле»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define PAT_BEG "%$"
  6. #define PAT_END "&*"
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.     const char *beg, *end;
  11.     const size_t beg_len = strlen(PAT_BEG);
  12.     const size_t end_len = strlen(PAT_END);
  13.    
  14.     if(argc != 2)
  15.     {
  16.         fprintf(stderr, "Usage: %s STRING\n", argv[0]);
  17.         exit(1);
  18.     }
  19.  
  20.     for(beg = strstr(argv[1], PAT_BEG);
  21.         beg != NULL && (end = strstr(beg + beg_len, PAT_END)) != NULL;
  22.         beg = strstr(end + end_len, PAT_BEG))
  23.         printf("%.*s\n", end - beg - beg_len, beg + beg_len);
  24.  
  25.     exit(0);
  26. }

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

В этом коде осуществляется поиск подстроки в файле.

  1. Переменные:
    • beg - указывает на начало подстроки в строке.
    • end - указывает на конец подстроки в строке.
    • beg_len - длина подстроки, которую ищем, начиная с первого символа.
    • end_len - длина подстроки, которую ищем, начиная с последнего символа.
  2. Первые действия:
    • Проверка количества аргументов в командной строке. Если их меньше двух, выводится сообщение об ошибке и программа завершается.
  3. Цикл поиска:
    • С помощью функции strstr начинается поиск подстроки, начиная с первого символа переданной строки.
    • Если подстрока найдена, ищется конец подстроки с помощью той же функции strstr, но уже с указанием смещения от найденной позиции.
    • Если конец подстроки найден, выводится найденная подстрока с помощью формата printf.
    • Поиск продолжается, начиная с симвога после конца найденной подстроки.
  4. Завершение программы:
    • Если подстрока не найдена, программа завершается.

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


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

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

10   голосов , оценка 4 из 5

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

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

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