|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexander Andrusenko 2:5020/400 23 Oct 2002 15:44:47 To : All Subject : Поиск строки по всем файлам диска. --------------------------------------------------------------------------------
Привет всем.
Да, я знаю, что большинство файловых менеджеров это позволяют, но хочу
написать для себя программу с расширенными возможностями поиска. При
написании столкнулся с проблемой, которая до этого казалась мне элементарной
вещью.
Как реализовать поиск строки в файле? Знаю несколько способов, но ни один из
них мне не нравится.
1. Переписать функцию strstr, сделав вместо обращений к памяти обращения к
файлу. Это даже способом называть стыдно - никакой буферизации, частое
обращение к диску, очень медленная работа...
2. Прочитать весь файл в буфер, и уже потом выполнять поиск. Это намного
лучше, но совершенно неприменимо для больших файлов.
3. Читать в буфер в цикле. Вроде бы то, что нужно, но... здесь вдруг вылазит
целая куча мелочей, в которых можно запутаться. Для наглядности примера
возьму строку, состояющую из n одинаковых символов, и буфер размером N>n.
При очередном чтении из файла выясняется, что содержимое буфера
заканчивается m теми же одинаковыми символами (m<n). И что делать дальше?
Лучшее, что я смог придумать в таком случае - это повторное чтение в буфер,
начиная с первого совпавшего символа. Вот только не уверен, что этот
способ - оптимальный. Кроме того, при такой реализации получается
ограничение на максимальный размер строки. И, кстати, каким в таком случае
будет оптимальное соотношение размеров буфера и строки?
Кто знает (или может предложить) лучший способ? Желательно, чтоб без
ограничения на размер строки (которая тоже будет читаться из файла).
--- ifmail v.2.15dev5
* Origin: Volia ISP (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/11847bb8f4f8c.html, оценка из 5, голосов 10
|