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

Поиск в строках с помощью strstr - C++

Восстановить пароль Регистрация
 
katena88
 Аватар для katena88
5 / 1 / 1
Регистрация: 25.10.2010
Сообщений: 86
27.10.2010, 14:56     Поиск в строках с помощью strstr #1
Помогите блондинке!!!

как воспользоваться функцией char *strstr(const char *s1, const char *kor);
если мне потом нужно все совпадения вывести на экран то что писать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2010, 14:56     Поиск в строках с помощью strstr
Посмотрите здесь:

Поиск и удаление элементов в символьных строках. C++
Поиск максимума в строках матрицы C++
C++ Поиск строки в строках
Матрица, поиск наименьешего в строках C++
C++ Поиск в строках файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
27.10.2010, 15:09     Поиск в строках с помощью strstr #2
вот так будет печатать с начала найденного фрагмента до конца строки.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main()
{
        char string[] = "locate substring example. cat all occurrences";
        char *ptr = string;
 
        while((ptr = strstr(ptr, "cat")) != NULL) {
                printf("%s\n", ptr++);
        }
 
        return 0;
}
Результат работы:
cate substring example. cat all occurrences
cat all occurrences
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.10.2010, 15:16     Поиск в строках с помощью strstr #3
Цитата Сообщение от katena88 Посмотреть сообщение
если мне потом нужно все совпадения вывести на экран
не очень понятная формулировка... попробую угадать:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
int main(void){
    const char * strA = "abcdefabcdefabcdef";
    const char * strB = "abc";
    char * p;
    int cnt;
 
    printf("A: %s\n", strA);
    printf("B: %s\n", strB);
 
    printf("B     SUBSTRING OF A\n------------------------------\n");
    for ( cnt = 0, p = strstr(strA, strB); p; ++cnt, p = strstr(p + 1, strB) )
        printf("%-6s%s\n", strB, p);
    printf("------------------------------\n%d matches.\n", cnt);
 
    return 0;
}
оно?
katena88
 Аватар для katena88
5 / 1 / 1
Регистрация: 25.10.2010
Сообщений: 86
27.10.2010, 16:07  [ТС]     Поиск в строках с помощью strstr #4
у меня есть массив char slova[20][20] в нем слова
мне нужно ввести корень с клавиатуры и все совпадения вывести на экран

Добавлено через 9 минут
Цитата Сообщение от fasked Посмотреть сообщение
вот так будет печатать с начала найденного фрагмента до конца строки.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main()
{
        char string[] = "locate substring example. cat all occurrences";
        char *ptr = string;
 
        while((ptr = strstr(ptr, "cat")) != NULL) {
                printf("%s\n", ptr++);
        }
 
        return 0;
}
Результат работы:
Я изучаю язык Си всего 2ой день. Не мог бы ты написать все как для полного чайника
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.10.2010, 16:15     Поиск в строках с помощью strstr #5
Цитата Сообщение от katena88 Посмотреть сообщение
у меня есть массив char slova[20][20]
не лучший способ хранить массив строк... так как-нибудь
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <string.h>
...
char slova[20][20] = { /* каким-либо образом заполненный массив */ };
char koren[20] = { /* то, что нужно искать */ };
int i;
for ( for i = 0; i < 20; ++i )
  if strstr(slova + 20 * i, koren)
    printf("%s\n", slova + 20 * i;
не проверял
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
27.10.2010, 16:20     Поиск в строках с помощью strstr #6
Цитата Сообщение от katena88 Посмотреть сообщение
Не мог бы ты написать все как для полного чайника
исходя из объяснений задания могу сказать Вам, что такой вариант не подойдет. так что, есть ли смысл?
katena88
 Аватар для katena88
5 / 1 / 1
Регистрация: 25.10.2010
Сообщений: 86
27.10.2010, 16:35  [ТС]     Поиск в строках с помощью strstr #7
Цитата Сообщение от easybudda Посмотреть сообщение
не лучший способ хранить массив строк... так как-нибудь
не проверял
спасибо ограмное!!! еще 1 глупый вопросик:
а как в строчку распечатать??
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
27.10.2010, 16:40     Поиск в строках с помощью strstr #8
Цитата Сообщение от katena88 Посмотреть сообщение
а как в строчку распечатать??
Цитата Сообщение от easybudda Посмотреть сообщение
printf("%s\n", slova + 20 * i;
убрать символ конца строки '\n '
C
1
printf("%s ", slova + 20 * i);
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.10.2010, 16:41     Поиск в строках с помощью strstr #9
Цитата Сообщение от katena88 Посмотреть сообщение
спасибо ограмное!!!
получилось?

Цитата Сообщение от katena88 Посмотреть сообщение
а как в строчку распечатать??
C
1
2
...
printf("%s ", slova + 20 * i);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2010, 16:43     Поиск в строках с помощью strstr
Еще ссылки по теме:

C++ Поиск подстроки в двух строках
Поиск чисел в строках файла C++
C++ Интерполирующий поиск в символьных строках

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
katena88
 Аватар для katena88
5 / 1 / 1
Регистрация: 25.10.2010
Сообщений: 86
27.10.2010, 16:43  [ТС]     Поиск в строках с помощью strstr #10
Цитата Сообщение от easybudda Посмотреть сообщение
получилось?

[[/C]
вот что я сделала:

C
1
2
3
4
for ( i = 0; i < 20; ++i )
{
    if (strstr(slova[i], kor))  printf("%s\n", slova[i]);
}
Да все получилось!!!! Спасибо ОГРОМНОЕ приОГРОМНОЕ!!!!
Yandex
Объявления
27.10.2010, 16:43     Поиск в строках с помощью strstr
Ответ Создать тему
Опции темы

Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru