LINUX.ORG.RU
ФорумTalks

[оффтопик][с++] memmem

 ,


0

0

что заюзать в качестве memmem для офтопика?

На работе винда не грузится, а надо срочно портировать новую версию под винду (аутсорсеры не осилили линукс=). Решил дома сделать. Уже башка не варит. Может коллективный разум поможет?

strstr? вроди не то так как нули не проглатывает, а в вижуал студии нет memmem.


вот набросал, даже не знал что такая есть:

void *memmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen)
{
unsigned char* p = (unsigned char*)haystack;
for (size_t i=0; i < (haystacklen - needlelen); i++, p++)
{
if (memcmp(p, needle, needlelen) == 0) return p;
}
return NULL;
}

xtron
()

Трололо или убейтье меня.

>"memmem" returns a pointer to the first occurrence of a substring within another string.


>"strstr" returns a pointer to the first occurrence of a substring within another string.

nikolayd
()
Ответ на: комментарий от xtron

ну в винде есть какой-нибудь strstr_s, если я все правильно понял. не приставай к алкашам!11

nikolayd
()
Ответ на: комментарий от const86

> Ну напиши свою реализацию, там же три строки.

Не люблю велосипеды, думал может всё-таки что-то есть готовое.

stpg
() автор топика
Ответ на: комментарий от xtron

> вот набросал, даже не знал что такая есть: > void *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen)

Пасиб, на win32 заюзал strstr - на этой платформе главное чтоб хоть както работало, а случаем с нулями внутри строки на ней пренебрежем.

stpg
() автор топика
Ответ на: комментарий от nikolayd

> Трололо или убейтье меня.

The memmem() function finds the start of the first occurrence of the substring needle of _length needlelen_ in the memory area haystack of _length haystacklen_.

The memmem() function returns a pointer to the beginning of the substring, or NULL if the substring is not found.

This function is a GNU extension.

VS

Locate substring

Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1.

The matching process does not include the terminating null-characters.

stpg
() автор топика
Ответ на: комментарий от stpg

>Не люблю велосипеды, думал может всё-таки что-то есть готовое.

что мешает использовать gcc под масдай (MinGW, Cygwin) ?
подозреваю что с ним идет и эта memmem.

xtron
()
Ответ на: комментарий от xtron

> что мешает использовать gcc под масдай (MinGW, Cygwin) ? подозреваю что с ним идет и эта memmem.

Думал об этом. Cygwin - не вариант, а вот MinGW - может быть. Пока только осилил кросс-компиляцию под x86_64 для дебиана под убунтой, до MinGW не добрался ещё (у нас много зависимостей на разные библиотеки). Проще было раз в несколько дней забутится в офтопик и поправить поломаный код в нескольких файлах.

stpg
() автор топика

В свое время писал реализацию сам, готового ничего не нашел (хотя и не исключаю, что плохо искал).

m1rag3 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.