Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Dasha-
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 5
#1

поиск слова в строке

09.11.2013, 16:37. Просмотров 1349. Ответов 4
Метки нет (Все метки)

Добрый день! Помогите найти ошибку.
Задание длина файла 1000 символов (длина строки 70 символов). Данные из файла занести в структуру с полем строка. Определить порядковый номер заданного слова в каждом предложении текста. По нажатию клавиши поочередно выделять каждое предложение текста, а в выделенном предложении - заданное слово.
Не работает функция поиска. И не знаю как номер слова найти, если строку посимвольно считываю.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <string.h>
 
using namespace std;
 
struct file_res
   {  char stroka[70]; //Переменная в которой будет содержимое файла
   };
 
char slovo[15]; //Слово вводимое с клавиатуры
   
char* findword(char* str1, char* str2);
 
 
char* findword(char* str1, char* str2)
{    for (int i = 0; str1[i] != '\0'; i++)
        if (isspace(str1[i])) {//перевірка параметру чи є він символом пробілу.
            char word[256] = "\0", pchars[256] = ".,!";
            for (int n = i+1, k = 0; !isspace(str1[n]) && str1[n] != '\0'; n++)
                if (!strchr(pchars,str1[n])) word[k++] = str1[n];
 
            char* buf = NULL; 
            if ((buf = strstr(word, str2)) != NULL) 
                return buf;
         }
    return NULL;
}
 
 
int main()
{
    int n;
    setlocale( LC_ALL,"RUS");
    char* buf = NULL;
     int size=0;
     file_res F1[1000]; //F1 - Масив структур типу file_res в 999 элементов
     int i=0;
     ifstream myfile("text.dat");
     if(myfile == NULL ) {//Проверка есть ли файл
        cout<<"Файл не знайдено"<<endl;
     return 1;  
     }   
     
     while (!myfile.eof())//Пока не кінець файлу
     {
      myfile.getline(F1[i].stroka,70); //getline-взяти рядок з файлу і занести у структуру
      cout<<F1[i].stroka<<endl; //вивести рядок на екран
      i++;
     }
     size=i-1; //size розмір масиву
     
     cout<<endl<<"Введiть слово: ";
     cin>>slovo;
     
     for(int j = 0; j < size; j++){
       if (findword(F1[j].stroka, slovo)!=NULL) {
        cout<<endl<<" В рядку " <<F1[j].stroka<<endl<<" знайдено слово \'"
              <<buf<<"\' пiд номером "<<j<<endl;
       }
       cout << "Press any key to continue . . ."<<endl;
       getch();
     }
     
     myfile.close();
     cout << "Press any key to exit . . ."<<endl;
     getch();
     return 0;
}
Содержимое файла text.dat
The so-called analytical capabilities of our mind are difficult of a.
Cess an analysis We judge about them only on results We know among o.
Her, that for a man, especially gifted The gift of analysis serves a.
The source of the most living pleasure. Like that as an athlete is p.
Oud of the force and adroitness. An analyst is glad any possibility .
O make clear something or extricate. Every, even and simple task, ca.
Ving sparks from his talent. He adores riddles, rebuses and cryptogr.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2013, 16:37
Ответы с готовыми решениями:

Поиск слова в строке
вот есть программка, которая должна искать слово word_r (отдельный файл) в...

Поиск слова в строке
Исходя из сабжа - тысячу раз разжеванная тема, но у меня немного другой вопрос....

Поиск слова в строке
Реализовать и использовать функцию поиска слова в строке: int searchWord(...

Поиск слова в строке
Дано: массив типа char, заполняется с клавиатуры. Дана переменная

Поиск слова в строке
if(name.Pos(&quot;Ïðîãðàììèðîâàíèå&quot;) == 1) price *= 2; если слово...

4
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,085
Записей в блоге: 1
09.11.2013, 16:59 #2
strstr, не?
0
Dasha-
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 5
09.11.2013, 17:12  [ТС] #3
Спасибо, так на много проще, а номер слова в строке как вывести?

C++
1
2
3
4
5
6
7
for(int j = 0; j < size; j++){
       if (strstr(F1[j].stroka, slovo)!=NULL) {
        cout<<endl<<" В рядку " <<F1[j].stroka<<endl<<" знайдено слово \'" <<slovo<<"\' на позиції "<<j<<endl;
       }
       cout << "Press any key to continue . . ."<<endl;
       getch();
     }
0
Kuzia domovenok
Нарушитель
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,085
Записей в блоге: 1
09.11.2013, 17:55 #4
strstr возвращает указатель на позицию слова в строке.
0
Dasha-
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 5
09.11.2013, 21:55  [ТС] #5
Как его вывести?

Добавлено через 22 минуты
указатель на подстроку, если нашёлся вывести разницу указателей (позиция в строке), в строке 70 символов, а какая должна быть переменная для указателя и как ее использовать?

Добавлено через 2 часа 18 минут
C++
1
2
3
4
5
6
7
8
9
     for(int j = 0; j < size; j++){
       if (strstr(F1[j].stroka, slovo)!=NULL) {
      char*  p=strstr(F1[j].stroka, slovo);
        cout<<endl<<" В строке " <<F1[j].stroka<<endl<<" слово \'"
              <<slovo<<"\' под номером "<<p<<endl; //выводит буквы, а если написать 70-*p тоже не работает 
         cout << "Press any key to continue . . ."<<endl;
         getch();
       }
     }
Люди помогите, нужно сделать до завтра
0
09.11.2013, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2013, 21:55

Поиск слова в строке
Есть переменная search стринг типа, в которую введено с клавы слово. Нужно...

Поиск слова в строке
Дано: массив a типа char, вводится с клавиатуры. Дана переменная s, в которую...

Поиск слова в строке
Всем привет! задача нужно найти слово в строке например: char str1=&quot;hello...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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