ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

проблема с буферами Part 3
  #1  
Старый 18.12.2008, 17:21
Аватар для fire64
fire64
Участник форума
Регистрация: 01.04.2008
Сообщений: 200
Провел на форуме:
1059196

Репутация: 39
По умолчанию проблема с буферами Part 3

есть два буфера нужно определить входит ли первый буфер в состав второго

что-то типа этого

PHP код:
#include <stdlib.h>
#include <string.h>


void main ()
{


char *"aaagggbbb"

char *"ggg";



int n проверитьb);



какие функции есть в C, что бы это выполнить
 
Ответить с цитированием

  #2  
Старый 18.12.2008, 17:30
Аватар для izlesa
izlesa
Участник форума
Регистрация: 03.01.2008
Сообщений: 156
Провел на форуме:
414311

Репутация: 110
Отправить сообщение для izlesa с помощью ICQ
По умолчанию

char *strstr(char *, char *)
Ищет первое вхождение одной строки в другой и возвращает указатель на него. А вообще почитай что-нибудь про стандартную библиотеку. MSDN тотже.
 
Ответить с цитированием

  #3  
Старый 18.12.2008, 18:54
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

2 izlesa

справдедиво лишь для буферов хранящих строки! Хотя все равно не понятно .... а сравнивать ли символы после 0x00. To do or not to do! What is the question!


в общем же случае ... вычисляется хэш равный сумме малого буфера
ХЭШ=Сумма(b[i])
.... вычислетя хэш "плавающего" фрагмента большого буфера
ХЭШ2=Сумма_фрагмента(a[i])
и пусть buf_length - длинна большого буфера
а buf2_length -длина малого буфера

тогда ...далее

Код:
int find_inside(char *a,char *b,int buf_length,int buf2_length)
{
int i,j,ex;
long ХЭШ,ХЭШ2;
for(j=0,ХЭШ=0,ХЭШ2=0;j<buf2_length;j++)
{   ХЭШ+=b[j];     ХЭШ2+=a[j]; }

for(i=0,ex=-1;i<buf_length-buf2_length && ex==-1;i++,ХЭШ2=ХЭШ2-a[i-1]+a[i+buf2_length])
{
  if(ХЭШ==ХЭШ2)
    if(memcmp(a+i,b,buf2_len)==0)
      ex=i;
}
return ex;
}
если возвращает -1 не было совпадений если >-1 то это отступ от начала буфера

суть должна быть понятна... технология быстрого поиска подстроки в строке, но на манер буферов! 8))


СУПЕР-быстродействие ! Быстрее не получится!

P.S. это к разговору давнишнему (применение олимпиадных технологий в жизни) !

Последний раз редактировалось Delimiter; 18.12.2008 в 20:34..
 
Ответить с цитированием

  #4  
Старый 18.12.2008, 21:12
Аватар для izlesa
izlesa
Участник форума
Регистрация: 03.01.2008
Сообщений: 156
Провел на форуме:
414311

Репутация: 110
Отправить сообщение для izlesa с помощью ICQ
По умолчанию

2Delimiter
Ну в вопросе присутствовали строки ).
Но алгоритм хорош ^______^
 
Ответить с цитированием

  #5  
Старый 19.12.2008, 15:17
Аватар для St0nX
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

Репутация: 106
Отправить сообщение для St0nX с помощью ICQ
По умолчанию

Код:
int FindStr(char *str1,char *str2)
{
	int nstr1,nstr2,i,j,nstr,sstr;
	nstr1=strlen(str1);
	nstr2=strlen(str2);
	if(nstr1>nstr2)
	{
		nstr=nstr1-nstr2;
		for(i=0;i<nstr;i++)
		{
			sstr=0;
			for(j=0;j<nstr2;j++)
			{
				if(str1[j+i]==str2[j])
				{
					sstr++;
				}
			}
			if(sstr==nstr2)
			{
				return 1;
			}
		}
	}
		else
		{
			return -1;
		}
		return 0;
}
Не уверен как будет работать strlen с 0х00 ну при необходимости можно и переписать
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема заливки шела Dimazzz Форумы 20 28.07.2006 05:53
проблема RocketV1_0 КИРЮХА ! Схемы и программы 0 10.06.2006 23:48
Проблема с установкой proxy Utochka Уязвимости 3 09.05.2006 01:03
Hydra проблема с брутом Utochka Уязвимости 2 02.03.2006 23:37
Проблема Mac OS X не только в Safari DRON-ANARCHY Мировые новости 0 23.02.2006 21:12



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ