Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Поиск подстроки в строке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ хеш-таблицы http://www.cyberforum.ru/cpp-beginners/thread311854.html
Реализовать ассоциативный массив в виде хеш-таблицы с операциями добавления, поиска . Ключом массива должна быть строка, значением – целое число. В качестве хеш-функции следует использовать...
C++ переменные экземпляра, класса, константы и переменные readonly -ФИО -должность -базовый оклад -дата поступления на работу -стаж к моменту поступления -коэффициент для расчета премии -минимальный размер оплаты труда(МРОТ) -... Методы класса для вычисления... http://www.cyberforum.ru/cpp-beginners/thread311851.html
Массивы С++ C++
Кто может помочь сложить и вычесть 2 массива? http://s014.***********/i326/1106/9c/410210498d1d.jpg
C++ Контроллер COM порта не прав!
Ребят, я отправляю к COM порт (функция WriteFile) строку в ASCII, содержащую в том числе символы "CR" и "LF" (принтерная тема), в прослушивающей программе смотрю, что с ком портом происходит. Все...
C++ Функция qsort http://www.cyberforum.ru/cpp-beginners/thread311791.html
Здравствуйте! Помогите пожалуйста отсортировать студентов с помощью функции qsort по "age" или другим критериям. Спасибо! #include "stdafx.h" #include <iostream> #include <iomanip> #include...
C++ Записать элементы одномерного массива в двумерную матрицу одним циклом записать элементы из int massive записать все элементы в int array ) одним циклом подробнее

Показать сообщение отдельно
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
03.06.2011, 17:35
поиск подстроки в строке - это strstr()...
в вашем случае надо сравнивать куски памяти

вот что-то сваял
C
1
2
3
4
5
6
int f(int* a1, int* a2, int s1, int s2) {
    for (int i=0; i<s1-s2; i++)
        if (memcmp(a2,a1+i,s2*sizeof(int))==0) return 1;
 
    return 0;
}
1 если нашел , 0 - если нет


так возвращает указатель на место в памяти:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int* f(int* a1, int* a2, int s1, int s2) {
    for (int i=0; i<s1-s2; i++)
        if (memcmp(a2,a1+i,s2*sizeof(int))==0) return a1+i;
 
    return 0;
 
}
//пример
int main() {
    int a1[14]={1,2,3,4,5,5,5,5,6,7,8,9,0};
    int a2[3]={3,4,5};
 
    std::cout << f(a1,a2,14,3)-a1+1;  // выведет место где нашлось
 
getchar();
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru