 |
Поиск в файле - FindPattern(); - Общение разработчиков - Программирование для Point Blank, общение и обсуждение разработок |
05.12.2012, 12:04
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 05.12.2012
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Поиск в файле - FindPattern();
Хай всем! Мне нужна помощь, Найти произвольную последовательность байт в файле большого объема.Решение придумал , но видимо настолько примитивное, что и результат не устраивает , а именно работает все так медленно , что проще ничего не искать :3
Вот функция:
Код:
int FindPattern(FILE *dat,unsigned char *p,unsigned long int idx)
{
long int i,j;
unsigned char buf;
// в idx кол-во эл-ов в p[]
i=idx;j=0;
while(!feof(dat) && i!=0) {
fread(&buf,1,1,dat);
if(buf==p[j])
{
i--;
j++;
}
else {
j=0;
if(i!=idx) fseek(dat,i-idx,SEEK_CUR);
i=idx;
}
}
if(i==0) return 1;
else return 0;
}
Вероятно что все коряво, но ускорить такой алгоритм уже имхо нельзя.
Есть ли иной способ? :3
Заранее спасибо
|
|
|
05.12.2012, 12:43
|
#2
|
|
|
|
Старший сержант
|
 Регистрация: 18.02.2011
 Сообщений: 232
 Популярность: 8824
 Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
|
Re: Поиск в файле - FindPattern();
Для решения производительности выдели в памяти участок и в него копируй кусок файла (если очень большой файл по нескольку раз копируй туда) и в этой памяти уже проверяй нормальной функцией FindPattern, а не той что у тебя... Производительность возрастет на 10000000000000.99%, по сравнению с тем кодом что у тебя. В конце не забудь память очистить
Последний раз редактировалось slava-zis; 05.12.2012 в 12:45.
|
|
|
05.12.2012, 16:37
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 05.12.2012
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Поиск в файле - FindPattern();
|
|
|
05.12.2012, 19:13
|
#4
|
|
|
|
Старший сержант
|
 Регистрация: 18.02.2011
 Сообщений: 232
 Популярность: 8824
 Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
|
Re: Поиск в файле - FindPattern();
вообще i3exec должен содержать адрес области памяти где хранится кусок файла, а вместо 0x2A315B2 должен быть размер области памяти...
остальное зависит от того что надо найти
|
|
|
06.12.2012, 00:16
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 05.12.2012
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Поиск в файле - FindPattern();
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
FindPattern
|
YogurtMen |
Вопросы и ответы, обсуждения |
0 |
14.09.2012 18:42 |
[Помогите!] FindPattern c#
|
Stereo[TIP] |
Вопросы и ответы, обсуждения |
8 |
17.08.2012 12:58 |
[Помогите!] Поиск в файле
|
Лесоруб |
Вопросы и ответы, обсуждения |
2 |
28.02.2011 20:07 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 00:01.
|
 |