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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Vertigo_
14 / 14 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
#1

Поиск подстроки в строке в файле - C++

26.10.2013, 15:12. Просмотров 766. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток. Суть задания в том, чтобы найти подстроку в строке в некотором файле. При успешном нахождении строки, в которой есть подстрока искомая, то вывести ее на экран(строку). Помогите найти ошибку в коде.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <fstream>
#include <string>
#define N  3000
#define M 100
using namespace std;
 
int main (){
    setlocale(LC_ALL, "Russian");
    char strl[N];
    char str[M];
    char * n;
    int k=0;
    FILE *F;
    F = fopen("D:\\Texts\\example1.txt","r");
 
    cin.getline(str, M);
    if (F==NULL) perror("Ошибка открытия файла");
    else { 
        while (!feof(F)){
             n = strpbrk((fgets(strl, N, F)), str);
             if (n!=NULL){ 
                 puts(strl);
                 k++;}
    }
    exit(0);
    if (k=0) cout << "No";
}
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2013, 15:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск подстроки в строке в файле (C++):

Поиск подстроки в файле - C++
Помогите организовать поиск подстроки в текстовой строки файле, которая вводится с клавиатуры

Поиск подстроки в строке - C++
Доброго времени суток! Столкнулся с такой задачей. Вводим 10 слов, далее вводим приставку (начало слова). В итоге программа должна показать...

Поиск подстроки в строке - C++
Здравствуйте. Задача такова: есть список (вообще, список большой, и не имеет в принципе ограничения, но сейчас у меня подстрок 5) подстрок,...

Поиск подстроки в строке - C++
Здравствуйте. Очень нужна программа поиска подстроки в строке. Действительно оч нужна. точная формулировка задачи: Написать...

Поиск подстроки в строке - C++
Добрый день. Ошибка в программе. Первый раз ищет отлично, потом постоянно ошибка //-функция осуществляет поиск подстроки str2 в...

Поиск подстроки в строке - C++
Добрый день всем! Ребята помогите решить такую задачу. Мне нужно в строке char *text = &quot;Help me jax111mackey&quot; получить строку 111 в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
26.10.2013, 16:33 #2
Предлагаю другое, более лаконичное решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <fstream>
#include <string>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string str, substr;
    std::ifstream inf;
    
    inf.open ( "Text.txt", std::ifstream::in );
    std::getline(std::cin, substr);
    //------------------------- 
    while (!inf.eof())
    {
        std::getline ( inf, str);
        if (str.find(substr) != std::string::npos)
            std::cout<<str<<std::endl;
    }
    //------------------------- 
    
    inf.close();
    
    std::system("pause");
    return 0;
}
1
_Vertigo_
14 / 14 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
28.10.2013, 17:45  [ТС] #3
metaluga145, в Вашем коде странная ошибка, а именно после ввода подстроки, которую нужно найти, консоль зависает.
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 19:26 #4
_Vertigo_, странно, потому что у меня не зависает)
0
_Vertigo_
14 / 14 / 2
Регистрация: 07.09.2013
Сообщений: 159
Завершенные тесты: 1
28.10.2013, 20:29  [ТС] #5
metaluga145, так же компилятор предупреждает о странной ескейп последовательности в строке 17. Такого я еще не видел))
А так, на вскидку, в моем коде ошибку видите?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
28.10.2013, 20:44 #6
Цитата Сообщение от _Vertigo_ Посмотреть сообщение
metaluga145, в Вашем коде странная ошибка, а именно после ввода подстроки, которую нужно найти, консоль зависает.
просто файл не находит. Необходимо добавить проверку, удалось ли создать объект ifstream
C++
1
if (!inf) return 1;
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.10.2013, 20:46 #7
_Vertigo_, не вижу, потому что там нахимичено очень много странных функций)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
28.10.2013, 20:47 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <fstream>
#include <string>
 
int main()
{
    std::string line, substr;
    std::ifstream ifs("input.txt");
    if (!ifs) return 1;
 
    std::cin >> substr;
    while (std::getline(ifs, line))
        if (line.find(substr) != std::string::npos)
            std::cout << line << std::endl;
}
1
metaluga145
28.10.2013, 21:00
  #9

Не по теме:

MrGluck, а что вообще хранит ifstream? а то вызов if (!ifstream) какой-то не очевидный.суть вопроса:почему мы так можем делать?

0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
29.10.2013, 00:18 #10
Цитата Сообщение от metaluga145 Посмотреть сообщение
MrGluck, а что вообще хранит ifstream? а то вызов if (!ifstream) какой-то не очевидный.суть вопроса:почему мы так можем делать?
Потому что у него перегружена версия оператора! который
возвращает истину, если установлены флаги ошибок потока
http://www.cplusplus.com/reference/i.../operator_not/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2013, 00:18
Привет! Вот еще темы с ответами:

Поиск подстроки в строке - C++
Найти множество всех слов, которые встречаются в каждом из 2 заданных предложений.

Поиск подстроки в строке - C++
Добрый вечер. У меня есть string нужно найти определенную под строку примером &quot;world&quot; Ищу с помощью функции find, получаю номер первого...

Поиск подстроки в строке - C++
Как в С++ осуществляется поиск подстроки в строке???

Поиск подстроки в строке - C++
Добрый вечер. Помогите пожалуйста с заданием, нужно срочно его сделать. Сам текст: даны 2 массива (один большой, другой маленький), нужно...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.10.2013, 00:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru