From e2561d03c21febc56b7fb66d6703fe76087cb36b Mon Sep 17 00:00:00 2001 From: gandc Date: Fri, 25 Apr 2025 10:18:24 +0300 Subject: [PATCH] add README --- README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f466a94 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# Рекурсивный поиск слова в файлах директории + +## Описание +Программа `wordsearch` на языке C рекурсивно обходит заданную директорию и её вложенные каталоги (включая скрытые, начинающиеся с точки) и ищет указанное слово во всех текстовых файлах. При обнаружении выводятся полный путь к файлу, номер строки и сама строка с найденным словом. + +## Требования +- Директория поиска передаётся первым аргументом командной строки (по умолчанию `~`). +- Слово для поиска передаётся вторым аргументом командной строки. +- Поддерживается флаг `-i` для игнорирования регистра. +- Обрабатываются скрытые файлы и директории. +- Корректная обработка ошибок (отсутствие директории, ошибки доступа). + +## Сборка +```bash +make +``` + +## Запуск +```bash +# По умолчанию ищет в ~: +./wordsearch искомое_слово + +# В указанной директории: +./wordsearch /путь/к/директории искомое_слово + +# С игнорированием регистра: +./wordsearch -i /путь/к/директорий ИскОмоЕ_СлОвО +``` + +## Пример вывода +``` +/home/user/files/document.txt:12: Эта строка содержит искомое_слово. +/home/user/files/.hidden_folder/notes.txt:45: Здесь также есть искомое_слово. +``` + +## Реализация +Файл `wordsearch.c` реализует следующие функции: +- `process_dir(const char *path)` — рекурсивный обход директории. +- `search_file(const char *filepath)` — построчное чтение через `fgets` и поиск с помощью `strstr` или `strcasestr`. +- Парсинг аргументов командной строки, установка флага `ignore_case`. + +## Дополнительное задание 1: игнорирование регистра (-i) +Флаг `-i`: сравнение сделано через `tolower`. + +## Дополнительное задание 2: использование `mmap` +Доступ к файлам через отображение-в-память сделан. \ No newline at end of file