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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define PAT_BEG "%$"
#define PAT_END "&*"
 
int main(int argc, char *argv[])
{
    const char *beg, *end;
    const size_t beg_len = strlen(PAT_BEG);
    const size_t end_len = strlen(PAT_END);
    
    if(argc != 2)
    {
        fprintf(stderr, "Usage: %s STRING\n", argv[0]);
        exit(1);
    }
 
    for(beg = strstr(argv[1], PAT_BEG);
        beg != NULL && (end = strstr(beg + beg_len, PAT_END)) != NULL;
        beg = strstr(end + end_len, PAT_BEG))
        printf("%.*s\n", end - beg - beg_len, beg + beg_len);
 
    exit(0);
}

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

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

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

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


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

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

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