Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение и поиск кусков в памяти, текст без \0 и \n в памяти 
V
    Опции темы
Syberex
Дата 26.9.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



Необходимо сравинить куски памяти, там находятся строки, а вернее сказать символы, например 2 массива по 2 мегобайта, в них только символы причём с учётом регистра, без всяких там энтеров и нуль символов, необходимо сравнить их. Знаю функцию

char x[100]="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";
   char y[100]="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";
   bool z=0;
   //extern PACKAGE bool __fastcall CompareMem(void * P1, void * P2, int Length);
   z=CompareMem(&x,&y,sizeof x);
    cout<<z<<endl;

она сравнивает куски памяти, но я хочу, чтоб сравнивала без учёта регистра, и чтоб искала в памяти, хочу чтоб формат был CompareMem(&x,&y,sizeof x); на подоби такого, нихочу никаких классов ивсяких наворотов из кучи объявлений, хочу просто два указателя и длина. Мож кто знает?
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
sergejzr
Дата 26.9.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Придётся ручками писать.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Syberex
Дата 26.9.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



Ручками медленно работать будет, наверно, я думаю наверняка у кого нибуть есть что подобное, можно даже и ассемблерской вставочкой. smile  smile  smile 
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
Romikgy
Дата 26.9.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



stricmp


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sergejzr
Дата 26.9.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Точно... а я понял сперва, что всё кроме букв надо игнорировать smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Syberex
Дата 26.9.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



не походит то что вы написали
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
Romikgy
Дата 26.9.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(Syberex @  26.9.2006,  15:06 Найти цитируемый пост)
не походит то что вы написали 

чем?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Oleg_Ci
Дата 26.9.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Код

strncmp( char *, char *, size_t );
memcmp( const void *, const void *, size_t );

for ( char *c1=x, char *c2=y; c1==c2 && size_t<max_size; c1++, c2++, size_t++ );
if ( c1-x == max_size ) // > true

PM MAIL   Вверх
Romikgy
Дата 26.9.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Олег4, 
Цитата(Syberex @  26.9.2006,  13:42 Найти цитируемый пост)
но я хочу, чтоб сравнивала без учёта регистра


Цитата(Syberex @  26.9.2006,  15:06 Найти цитируемый пост)
не походит то что вы написали

имхо проще делать копирование в промежуточные массивы с добавлением в конце нуля и сравнением
Цитата(Romikgy @  26.9.2006,  14:58 Найти цитируемый пост)
stricmp 




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sergejzr
Дата 26.9.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



strincmp и нуль не нужен.

Код

int strnicmp(const char *s1, const char *s2, size_t n)



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Romikgy
Дата 26.9.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(sergejzr @  26.9.2006,  15:24 Найти цитируемый пост)
strincmp и нуль не нужен.

согласен , но чет такого не видел , хотя и сильно не присматривался


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Syberex
Дата 27.9.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



int strnicmp(const char *s1, const char *s2, size_t n)

не компилится!
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
sergejzr
Дата 27.9.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



"не компилится! " бывает разные. Ты пиши, что компилер говорит.

http://mcntp.sourceforge.net/man/stricmp.3.html
http://www.delorie.com/djgpp/doc/libc/libc_770.html



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
dumb
Дата 27.9.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



_strnicmp

ps. "не компилится!"... smile тогда уж сразу бы говорил "не работает ничего" - оно еще более конкретно...
PM MAIL   Вверх
sergejzr
Дата 27.9.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



ОФФТОП
"Вот! Я жму, жму, а он не берёт"  © Услышал этот багрепорт сисадмину от женщины за стойкой  при регистрации в московской гостиннице  smile  smile  smile
 



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Syberex
Дата 27.9.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



 char x[100]="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";
 char y[100]="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";
 int  z=0;
   z=strnicmp(&x,&y,sizeof x);
   cout<<z<<endl;


ошибка такая

Build
  [C++ Error] Intellect.cpp(38): E2034 Cannot convert 'char ( *)[100]' to 'const char *'
  [C++ Error] Intellect.cpp(38): E2342 Type mismatch in parameter '__s1' (wanted 'const char *', got 'char ( *)[100]')
  [C++ Error] Intellect.cpp(38): E2034 Cannot convert 'char ( *)[100]' to 'const char *'
  [C++ Error] Intellect.cpp(38): E2342 Type mismatch in parameter '__s2' (wanted 'const char *', got 'char ( *)[100]')
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
sergejzr
Дата 27.9.2006, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Так пиши. 

char *x="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";
char *y="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";

Если не знаешь почему, создай новую тему в "Центре помощи" или "С++ для начинающих". А этот вопрос уже решён.

Добавлено @ 12:31 



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Syberex
Дата 27.9.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



а мне не нужен константный массив, я динамический сравниваю, и причём только выборочные куски, а все отвечают чёто только константные функции.
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
sergejzr
Дата 27.9.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Syberex, как я уже сказал, если не знаешь, что такое const, спрашивай в разделе для начинающих. Твои догадки не верны.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Syberex
Дата 27.9.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



если бы мне надо было так 
char *x="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";
char *y="DenisPrivetDenisPrivetDenisPrivetDenisPrivet";

яб так и сделал, но если массив изменяется свыше 1000 раз в секунду, такие объявления не уместны.
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
sergejzr
Дата 27.9.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Цитата(Syberex @  27.9.2006,  10:44 Найти цитируемый пост)
если массив изменяется свыше 1000 раз в секунду, такие объявления не уместны. 

Какая разница?
пиши char *x=new char[100];
strcopy("DenisPrivetDenisPrivetDenisPrivetDenisPrivet",x); //итд



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Romikgy
Дата 27.9.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(Syberex @  27.9.2006,  11:28 Найти цитируемый пост)
strnicmp(&x,&y,sizeof x);

Код

strnicmp((const char *)&x[0],(const char *)&y[0],sizeof x);


Это сообщение отредактировал(а) Romikgy - 27.9.2006, 13:03


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sergejzr
Дата 27.9.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Romikgy, это не хороший совет. Потому что char * и char[] это структурно уже не одно и тоже. И в каждом компилере char[] реализовано по своему. 

Вообще. [] нужно только если чтото хочешь написать на скорую руку, или лень с выделением памяти заморачиваться. Но логику программы на этом строить не стоит..

Добавлено @ 13:06 
И вместо (const char *) пойдёт просто (char *)
Но, как я уже говорил, это другая тема. Возможно поиск поможет.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Syberex
Дата 27.9.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 15.9.2006
Где: Украина

Репутация: нет
Всего: нет



компилится чудестно, сенкс
--------------------
whole power in artificial intelligences
PM MAIL ICQ   Вверх
sergejzr
Дата 27.9.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



char **x=new char *[5];

Это было правильно smile Две звёздочки забыл.

Цитата(Romikgy @  27.9.2006,  12:45 Найти цитируемый пост)
имхо все массивы в памяти преобразуются в одномерный массив, а уж динамика это или статика имхо для проги все равно , разница где это размещается, имхо

Нет конечно. Для этого я и привёл пример с дин. массивом. Один раз у тебя массив элементов char[][] а другой раз массив из указателей на другие массивы char** которые где угодно могут располагаться.

Добавлено @ 14:59 
Цитата(Romikgy @  27.9.2006,  12:45 Найти цитируемый пост)
имхо я не обманывал , а преобразовал к нужному типу.

К нужному тебе, чтобы компилилось, но на самом деле, как я и писал, указательна массив и массив - разные вещи.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0739 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.