add README

This commit is contained in:
gandc 2025-04-25 10:18:24 +03:00
parent f07c2ef73a
commit e2561d03c2
Signed by: gandc
GPG Key ID: 9F77B03D43C42CB4

46
README.md Normal file
View File

@ -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`
Доступ к файлам через отображение-в-память сделан.